Maison > base de données > tutoriel mysql > qu'est-ce que la sous-requête MySQL

qu'est-ce que la sous-requête MySQL

青灯夜游
Libérer: 2019-06-01 14:29:42
original
8921 Les gens l'ont consulté

La sous-requête de MySQL est une partie importante des requêtes multi-tables. Elle est souvent utilisée avec les requêtes de jointure et constitue la base des requêtes multi-tables. L'article suivant vous présentera les sous-requêtes, j'espère qu'il vous sera utile.

qu'est-ce que la sous-requête MySQL

Qu'est-ce qu'une sous-requête ?

Sous-requête, également appelée requête interne. Lorsqu’une requête est une condition d’une autre requête, on parle de sous-requête. Les sous-requêtes peuvent utiliser plusieurs commandes simples pour créer de puissantes commandes composées. Les sous-requêtes sont le plus souvent utilisées dans la clause WHERE d'une commande SELECT-SQL.

Une sous-requête est une instruction SELECT imbriquée dans une instruction SELECT, SELECT…INTO, INSERT…INTO, DELETE ou UPDATE ou dans une autre sous-requête.

2. Classification des sous-requêtes

La sous-requête est divisée dans les catégories suivantes :

1. -query : return Un scalaire à valeur unique, dans sa forme la plus simple.

2. Sous-requête de colonne : l'ensemble de résultats renvoyé est composé de N lignes et d'une colonne.

3. Sous-requête de ligne : l'ensemble de résultats renvoyé est une ligne avec N colonnes.

4. Sous-requête de table : l'ensemble de résultats renvoyé est composé de N lignes et de N colonnes.

Opérateurs pouvant être utilisés : = > < >= <= <> ANY IN SOME ALL EXISTS

Une sous-requête renverra un scalaire (juste une valeur), une ligne, une colonne ou un tableau. Ces sous-requêtes sont appelées scalaires, ligne, sous-requêtes de colonnes et de tables.

Si la sous-requête renvoie une valeur scalaire (une seule valeur), alors la requête externe peut utiliser : =, >, <, >=, <= et <> ; si la sous-requête ne renvoie pas de valeur scalaire et que la requête externe utilise un opérateur de comparaison pour comparer le résultat de la sous-requête, une exception sera levée.

1. Sous-requête scalaire :

signifie que la sous-requête renvoie un scalaire avec une valeur unique, comme un nombre ou une chaîne, et est également la sous-requête la plus simple. formulaire de retour. Vous pouvez utiliser ces opérateurs = > < >= <= <> pour comparer les résultats scalaires des sous-requêtes. Habituellement, la position de la sous-requête est sur le côté droit de l'expression de comparaison

Exemple :

SELECT * FROM article WHERE uid = (SELECT uid FROM user WHERE status=1 ORDER BY uid DESC LIMIT 1)
SELECT * FROM t1 WHERE column1 = (SELECT MAX(column2) FROM t2)
SELECT * FROM article AS t WHERE 2 = (SELECT COUNT(*) FROM article WHERE article.uid = t.uid)
Copier après la connexion

2. . Exemple de requête MySQL :

signifie que l'ensemble de résultats renvoyé par la sous-requête est composé de N lignes et d'une colonne. Les résultats sont généralement renvoyés à partir d'une requête sur un certain champ de la table.

Vous pouvez utiliser ces opérateurs = > < >= <= <> pour comparer les résultats scalaires des sous-requêtes. Habituellement, la position de la sous-requête est sur le côté droit de la formule de comparaison

Vous pouvez utiliser IN. Les opérateurs , ANY, SOME et ALL ne peuvent pas être utilisés directement. Les opérateurs = > < >= <= <> qui comparent les résultats scalaires ne peuvent pas être utilisés directement.

Exemple :

SELECT * FROM article WHERE uid IN(SELECT uid FROM user WHERE status=1)
SELECT s1 FROM table1 WHERE s1 > ANY (SELECT s2 FROM table2)
SELECT s1 FROM table1 WHERE s1 > ALL (SELECT s2 FROM table2)
Copier après la connexion

NOT IN est un alias de <>

Cas particulier :

Si table2 est une table vide, le résultat après ALL est VRAI

Si la sous-requête renvoie tel que (0, NULL, 1), bien que Si s1 est plus grand que les résultats renvoyés, mais qu'il y a des lignes vides, le résultat après ALL est INCONNU.

Remarque : dans le cas d'une table vide table2, les instructions suivantes renverront NULL :

SELECT s1 FROM table1 WHERE s1 > (SELECT s2 FROM table2)
SELECT s1 FROM table1 WHERE s1 > ALL (SELECT MAX(s1) FROM table2)
Copier après la connexion

3. Sous-requête de ligne MySQL :

doigt Le Le jeu de résultats renvoyé par la requête est une ligne avec N colonnes. Le résultat de la sous-requête est généralement le jeu de résultats renvoyé en interrogeant une certaine ligne de données dans la table.

Exemple :

SELECT * FROM table1 WHERE (1,2) = (SELECT column1, column2 FROM table2)
//注:(1,2) 等同于 row(1,2)
SELECT * FROM article WHERE (title,content,uid) = (SELECT title,content,uid FROM blog WHERE bid=2)
Copier après la connexion

4. Sous-requête de table MySQL :

signifie que l'ensemble de résultats renvoyé par la sous-requête est une donnée de table de N lignes et N colonnes.

Exemple :

SELECT * FROM article WHERE (title,content,uid) IN (SELECT title,content,uid FROM blog)
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal