L’opérateur EXISTS teste l’existence de certaines lignes dans une sous-requête.
L’opérateur EXISTS renvoie true si la sous-requête renvoie un ou plusieurs enregistrements.
Le résultat de l’opérateur EXISTS :
- Est vrai uniquement si le nombre de lignes spécifié par la sous-requête est différent de zéro.
- Est faux uniquement si le nombre de lignes spécifié par la sous-requête est zéro.
- Ne peut pas être inconnu.
Syntaxe:
SELECT nom_colonne(s)
FROM nom_table
WHERE EXISTS
(SELECT nom_colonneFROM nom_table WHERE condition);
Examinons les données du tableau “Commandes” ci-dessous :
Numéro-Commande | Numéro-Client | Date-Commande |
---|---|---|
1001 | 10 | 2020-09-08 |
1002 | 99 | 2020-09-01 |
1003 | 17 | 2020-08-25 |
1004 | 76 | 2020-09-19 |
1005 | 70 | 2020-09-19 |
Examinons les données du tableau “Clients” ci-dessous :
Numéro-Client | Nom-Client | Pays |
---|---|---|
76 | Jack | Amérique |
17 | Jancy | Allemagne |
20 | Carmen | Pakistan |
10 | robert | Inde |
99 | Brian | Chine |
70 | Avril | Amérique |
Exemple 1
L’instruction SQL suivante renvoie TRUE et répertorie les clients qui ont passé une commande.
SELECT Nom_Client
FROM Clients
WHERE EXISTS (SELECT Numero_Commande
FROM Commandes
WHERE Commandes.Numero_Commande = Clients.Numero_Commande
);
Résultat:
Nom-Cient |
---|
Jack |
Jancy |
robert |
Brian |
Avril |
Exemple : 2
L’instruction SQL suivante renvoie TRUE et répertorie les clients qui ont passé une commande à la date ‘2020-09-19’.
SELECT Nom_Client
FROM Clients
WHERE EXISTS (SELECT Numero_Commande
FROM Clients
WHERE Clients.Numero_Commande = Client.Numero_Commande
AND Date_Commande='2020-09-19');
Résultat:
Nom-Client |
---|
Brian |
Avril |