Maison  >  Article  >  base de données  >  Quelle est l'utilité d'existe dans MySQL

Quelle est l'utilité d'existe dans MySQL

WBOY
WBOYoriginal
2022-01-05 09:47:0230604parcourir

Dans MySQL, exist est utilisé pour vérifier si la sous-requête renverra au moins une ligne de données. La sous-requête ne renvoie réellement aucune donnée, mais renvoie vrai ou faux. La syntaxe est "SELECT field FROM table WHERE EXISTS (sous-requête). ;

Quelle est l'utilité d'existe dans MySQL

L'environnement d'exploitation de ce tutoriel : système windows10, version mysql8.0.22, ordinateur Dell G3.

À quoi sert exist dans MySQL ?

Syntaxe :

SELECT 字段 FROM table WHERE EXISTS (subquery);

Paramètres :

la sous-requête est une instruction SELECT restreinte (la clause COMPUTE et le mot-clé INTO ne sont pas autorisés)

Exemple :

SELECT * FROM A WHERE EXISTS (SELECT 1 FROM B WHERE B.id = A.id);

EXIST S séquence d'exécution :

1. Exécutez d'abord une requête externe et mettez en cache l'ensemble de résultats, tel que SELECT * FROM A

2. Parcourez chaque ligne d'enregistrements R dans l'ensemble de résultats de la requête externe et remplacez-la dans la sous-requête comme condition. à interroger, comme SELECT 1 FROM B WHERE B.id = A.id

3 Si la sous-requête renvoie des résultats, la clause EXISTS renvoie TRUE. Cette ligne R peut être utilisée comme ligne de résultat de la requête externe, sinon elle. ne peut pas être utilisé comme résultat

L'exemple est le suivant :

Supposons qu'il y ait maintenant trois tables :

student : table d'étudiant, qui a le champ sno comme numéro d'étudiant et sname comme nom d'étudiant

course : cours table, qui a le champ cno comme numéro de cours et cname comme nom de cours

student_course_relation : La table de sélection de cours enregistre les cours que les étudiants ont choisis. Il y a des champs sno est le numéro d'étudiant et cno est le numéro de cours ici. sont quelques exemples pour illustrer l'utilisation de EXISTS et NOT EXISTS, et leurs différences avec IN et NOT IN.

1. Utilisez NULL dans la sous-requête et renvoyez toujours l'ensemble de résultats

Les trois cas suivants renvoient les mêmes données, tous les données de la table étudiant seront renvoyées :

select * from student; 
select * from student where exists (select 1); 
select * from student where exists (select null);

2. La sous-requête EXISTS renvoie une valeur booléenne vraie ou fausse

EXISTS est utilisée pour vérifier si la sous-requête renverra au moins une ligne de données. La sous-requête n'en renvoie aucune. data, mais renvoie une valeur booléenne true ou false EXISTS spécifie une sous-requête pour détecter l'existence d'une ligne.

EXISTS se soucie uniquement de savoir s'il y a des enregistrements dans la sous-requête et n'a rien à voir avec l'ensemble de résultats spécifique. Par conséquent, dans l'exemple suivant, select sno dans la sous-requête peut également être remplacé par select cno ou select 1, et le. L’ensemble de résultats obtenu par la requête est le même.

Interrogez tous les étudiants ayant suivi le cours numéro 3 :

select * from student a 
where exists (select sno from student_course_relation b where b.cno=3 and b.sno=a.sno); 
select * from student a 
where exists (select cno from student_course_relation b where b.cno=3 and b.sno=a.sno); 
select * from student a 
where exists (select 1 from student_course_relation b where b.cno=3 and b.sno=a.sno);

Apprentissage recommandé :

Tutoriel vidéo 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!

Déclaration:
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