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 |