Ein weiterer häufiger Fallstrick, der bei der Optimierung von SQL-Abfragen für NULL-Werte vermieden werden sollte, ist die Verwendung des NOT IN-Operators mit einer Unterabfrage, die NULL-Werte enthält. Angenommen, Sie möchten die Kunden finden, die noch keine Bestellungen aufgegeben haben. Du könntest so etwas schreiben: AUSWÄHLEN * VON Kunden, WO der Kunde_id NICHT IN (SELECT-Kunde_id FROM Bestellungen) . Wenn die Tabelle orders jedoch NULL-Werte in der customer-Tabelle enthält,_id-Spalte verwenden, gibt diese Abfrage ein leeres Resultset zurück, da der NOT IN-Operator für jeden Vergleich mit NULL als unbekannt ausgewertet wird. Eine bessere Möglichkeit, diese Abfrage zu schreiben, besteht darin, NOT EXISTS mit einer korrelierten Unterabfrage wie folgt zu verwenden: AUSWÄHLEN * VON KUNDEN c WO NICHT VORHANDEN (SELECT 1 FROM orders o WHERE o.customer_id = c.customer_id) . Auf diese Weise ignoriert die Abfrage alle NULL-Werte in der Tabelle orders und gibt das richtige Ergebnis zurück.