PaliSkill
SQL Intermédiaire

Leçon 4 / 9 — Chapitre 3: Sous-requêtes

NOT EXISTS : tester l'absence de correspondance

NOT EXISTS inverse EXISTS : elle renvoie vrai quand la sous-requête corrélée ne trouve aucune ligne.

SELECT p.nom
FROM produits p
WHERE NOT EXISTS (
  SELECT 1 FROM commandes c WHERE c.produit_id = p.id
);

Cette requête garde les produits pour lesquels aucune commande ne correspond : Stylo et Biscuits, soit 2 lignes — exactement le résultat obtenu par LEFT JOIN + WHERE ... IS NULL au chapitre précédent. Ce sont deux façons différentes d'exprimer la même idée, « aucune correspondance » : NOT EXISTS l'exprime directement, sans avoir besoin d'une jointure préalable.

À retenir :

  • NOT EXISTS (sous-requête) renvoie vrai quand la sous-requête corrélée ne trouve aucune ligne pour la ligne externe en cours.
  • NOT EXISTS répond directement à « quelles lignes n'ont aucune correspondance ? », sans passer par une jointure.
  • Ce résultat correspond à celui obtenu par LEFT JOIN + IS NULL — deux techniques différentes pour la même question.

À vous de jouer : sur ces mêmes données, écrivez la version LEFT JOIN + IS NULL équivalente à ce NOT EXISTS, et vérifiez qu'elle renvoie le même résultat.

🔒

Continuez ce module

Débloquez les leçons restantes ainsi que la certification finale.

2 500 XOF / 3,81 € / 4,15 $

Débloquez les 80 leçons restantes de ce module

Votre paiement est vérifié avant l'activation de l'accès