Maison > Article > base de données > Une brève introduction à la sous-requête MySQL
La signification fondamentale d'une sous-requête est une « instruction de requête » qui apparaît à certaines positions dans une instruction de requête (instruction select). Cet article partage principalement avec vous une brève introduction aux sous-requêtes MySQL, dans l'espoir d'aider tout le monde.
Exemple :
Après modification :
Si l'instruction de sous-requête de "
select 5000
" est remplacée par "Select le prix moyen de tous les biens" a une signification pratique.
La sous-requête sert la requête principale
La requête principale est exécutée uniquement après que la sous-requête ait obtenu certaines données de résultat ;
Sous forme, il peut être exprimé comme suit :
sélectionner un champ, une expression ou une sous-requête [comme alias] à partir du nom de la table ou lier les résultats ou des sous-requêtes où des champs ou des expressions ou des jugements conditionnels de sous-requêtes
Autrement dit, les sous-requêtes peuvent apparaître dans ces positions (avoir est en fait OK, car cela a la même signification que où) ;
sous-requête, divisée par position (occasion) :
类型 | 形式 |
---|---|
作为主查询的结果数据 | select c1,(select f1 from tab2) as f11 from tab1; #这里子查询应该只有一个数据(一行一列,标量子查询) |
作为主查询的条件数据 | select c1 from tab1 where c1 in (select f1 from tab2); #这里子查询可以是多个数据(多行一列,列子查询) |
作为主查询的来源数据 | select c1 from (select f1 as c1, f2 from tab2) as t2; #这里子查询可以是任意查询结果(表子查询) |
Sous-requêtes dans les opérateurs de comparaison
Forme :
Opérateurs de comparaison d'opérandes (sous-requête scalaire) ; 🎜>
select .... from XXX where id > 5;Exemple :
select * from product where price = (select max(price) from product );
Sous-requête utilisant dans ;
XX in (值1,值2,值3,....);
XX in (列子查询)Exemple :
select * from product where protype_id in( select protype_id from product_type where protype_name like ‘%电%’ );
Utilisez la sous-requête de n'importe quelsous la forme :
操作数 比较运算符 any (列子查询);Signification :
Exemple :
select * from tab1 where id > any (select f1 from tab2);
Sous-requête utilisant ; all :Forme :
操作数 比较运算符 all (列子查询);Signification :
select * from tab2 where f1 > all ( select id from tab1 );
Utilisation de la sous-requête de certains
Requête utilisant existeForme :
where exists( 子查询 )Signification :
Parce que la sous-requête existe Cette signification conduit souvent à la situation dans la requête principale : soit tous sont supprimés, soit aucun d'entre eux n'est supprimé. S’il se limite à cette signification (situation d’usage), il perd fondamentalement sa signification pratique.Donc :
Dans les applications réelles, cette sous-requête n'est souvent pas une sous-requête indépendante, mais doit être combinée avec la source de données (table de la "requête principale" ), établir une sorte de relation - généralement une relation de connexion. Le mode d'établissement est « implicite », c'est-à-dire que la relation n'est pas reflétée dans le code, mais il y a la « substance » de sa connexion en interne.
Remarque :
;
- D'autres sous-requêtes peuvent être exécutées indépendamment et obtiendront un résultat courant.
- Les conditions de cette sous-requête doivent être définies pour avoir une certaine corrélation avec un certain champ de la requête principale. Habituellement, ce jugement est la "condition de connexion originale" des deux tables
Enfin une conclusion :
Recommandations associées :Introduction détaillée à la sous-requête MySQLQu'est-ce qu'une sous-requête MySQL ? Comment filtrer à l'aide d'une sous-requête ? Optimisation des sous-requêtes MySQL
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!