Qu'est-ce qu'une sous-requête MySQL ?
La sous-requête est également appelée requête interne. Par rapport à la requête interne, celle contenant la requête interne est appelée requête externe. Les sous-requêtes permettent d'imbriquer une requête dans une autre requête.
Caractéristiques des instructions de sous-requête de base de données MySQL : Partout où une expression peut être utilisée, une sous-requête peut être utilisée, à condition qu'elle renvoie une seule valeur ; la sous-requête dépend du nombre de valeurs renvoyées et la sous-requête a des valeurs externes ; dépendances, classification basée sur les différences dans les opérateurs de comparaison ; ceci est souvent utilisé dans les instructions SQL de requête de pagination.
Les sous-requêtes peuvent être imbriquées dans les instructions select, insert, update, delete et autres
Dans la plupart des cas, les sous-requêtes agissent comme des ensembles de résultats intermédiaires
Les sous-requêtes peuvent être imbriquées et les restrictions d'imbrication varient en fonction de la mémoire et de la complexité de l'expression
Partout où une expression peut être utilisée, une sous-requête peut être utilisée, à condition qu'elle renvoie une seule valeur
Selon le nombre de valeurs de retour, elle peut être divisée en : sous-requête scalaire, sous-requête à valeurs multiples
Selon la sous-requête, dépendance externe : sous-requête indépendante, sous-requête associée
selon la différence des opérateurs de comparaison : IN, EXISTS, ANY, SOME, ALL et autres formes
Créez d'abord deux tableaux (table des étudiants et table des enseignants)
# 创建学生表 mysql> create table tb_student( -> stu_ID long, -> class varchar(5), -> score int -> ); Query OK, 0 rows affected (0.23 sec) # 创建教师表 mysql> create table tb_teacher( -> tea_ID long, -> class varchar(5), -> age int -> ); Query OK, 0 rows affected (0.49 sec)
Mettez quelques valeurs Insérez dans le tableau
insert into tb_student values(1, "A", 20); insert into tb_student values(2, "A", 30); insert into tb_student values(3, "A", 70); insert into tb_student values(4, "B", 60); insert into tb_student values(5, "B", 70); insert into tb_student values(6, "B", 80); insert into tb_teacher values(1, "A", 25); insert into tb_teacher values(2, "B", 40);
Une fois la préparation terminée, passez à l'exercice de sous-requête
Exemple 1 : Identifiants des enseignants dans chaque classe et leurs scores moyens en classe
mysql> select tea_ID, -> (select avg(score) from tb_student as s where s.class = t.class group by class) -> as Avg from tb_teacher as t; +--------+---------+ | tea_ID | Avg | +--------+---------+ | 1 | 40.0000 | | 2 | 70.0000 | +--------+---------+ 2 rows in set (0.00 sec)
Exemple 2 : Âge des enseignants dans chaque classe et nombre d'élèves qui réussissent dans la classe (60 est la ligne de réussite)
mysql> select age, -> (select count(*) from tb_student as s where s.class = t.class && s.score >= 60 group by class) -> as Count from tb_teacher as t order by Count desc; +------+-------+ | age | Count | +------+-------+ | 40 | 3 | | 25 | 1 | +------+-------+ 2 rows in set (0.00 sec)
Recommandations associées :
base de données d'instructions de requête de pagination MySQL query_MySQL
Instruction de sous-requête de limite MySQL_MySQL
Vidéo : Requête de données avancée - Clause Where - Vous emmène jouer avec MySQL en six jours
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!