#820

Einen heimtückischen NULL-Bug erkennen und umgehen

Die mit NOT IN formulierte Abfrage „finde Kunden, die keine Bestellungen haben“ birgt einen üblen Bug: Enthält die Unterabfrage auch nur eine einzige NULL-Zeile, liefert das gesamte NOT IN stillschweigend null Zeilen — ohne Fehler, ohne Warnung. Eine klassische Falle der dreiwertigen Logik in SQL. Die sichere Entsprechung ist NOT EXISTS: Sie liefert eine Zeile, wenn die innere Abfrage nichts gefunden hat, und ist immun gegen NULL. Schreibe die Prüfung „Kunden ohne Bestellungen“ mit NOT EXISTS um, sodass die Abfrage auch bei NULL in den Daten korrekt funktioniert. Zeige die id und die E-Mail solcher Kunden und sortiere nach id.

Beispiel der erwarteten Ausgabe

So sieht eine korrekte Antwort aus — ihre Zeilenanzahl ist eigenständig und muss nicht mit den Schematabellen übereinstimmen.

idemail
3новый@email

Dein Abfrageergebnis erscheint hier