Opérateur SQL EXISTS 

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 :

  1. Est vrai uniquement si le nombre de lignes spécifié par la sous-requête est différent de zéro.
  2. Est faux uniquement si le nombre de lignes spécifié par la sous-requête est zéro.
  3. 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-CommandeNuméro-ClientDate-Commande
1001102020-09-08
1002992020-09-01
1003172020-08-25
1004762020-09-19
1005702020-09-19

Examinons les données du tableau “Clients” ci-dessous :

Numéro-ClientNom-ClientPays
76JackAmérique
17JancyAllemagne
20CarmenPakistan
10robertInde
99BrianChine
70AvrilAmé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