#820

Repérer un bug NULL sournois et le contourner

La requête « trouver les clients qui n'ont aucune commande » formulée avec NOT IN comporte un bug pernicieux : si la sous-requête contient ne serait-ce qu'une seule ligne NULL, le NOT IN tout entier renvoie silencieusement zéro ligne — sans erreur, sans avertissement. Un piège classique de la logique à trois valeurs en SQL. L'équivalent sûr est NOT EXISTS : il renvoie une ligne lorsque la requête interne n'a rien trouvé, et il est insensible à NULL. Réécris la vérification « clients sans commande » à l'aide de NOT EXISTS afin que la requête fonctionne correctement même en présence de NULL dans les données. Affiche l'id et l'email de ces clients, trie par id.

Exemple de sortie attendue

Voici à quoi ressemble une réponse correcte — son nombre de lignes lui est propre, il n'a pas à correspondre aux tables du schéma.

idemail
3новый@email

Le résultat de votre requête apparaîtra ici