Page 32 - DCG - SQL - 2025
P. 32
FICHE 13 - Inclusion et exclusion : IN, NOT IN et
alternative JOIN
Le concept
L’opérateur IN permet de tester si une valeur appartient à un ensemble. L’opérateur NOT IN teste qu’elle n’y
appartient pas. Les deux peuvent être utilisés avec une sous-requête SQL-92.
ATTENTION : NOT IN échoue silencieusement si la sous-requête retourne une valeur NULL. Dans ce cas, il
est préférable d’utiliser LEFT JOIN avec IS NULL.
️ La syntaxe
IN avec sous-requête :
SELECT champ
FROM table
WHERE champ IN (SELECT champ FROM autre_table WHERE condition)
NOT IN avec sous-requête :
SELECT champ
FROM table
WHERE champ NOT IN (SELECT champ FROM autre_table WHERE condition)
Alternative SQL-92 : LEFT JOIN + IS NULL :
SELECT A.champ
FROM A LEFT JOIN B ON A.champ = B.champ
WHERE B.champ IS NULL
Exemple expliqué
Afficher les clients ayant passé au moins une commande :
SELECT NomClient
FROM CLIENT
WHERE NoClient IN (SELECT NoClient FROM COMMANDE)
Afficher les clients n’ayant passé aucune commande ( sous-requête sans NULL) :
SELECT NomClient
FROM CLIENT
WHERE NoClient NOT IN (SELECT NoClient FROM COMMANDE)
27