Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

T-SQL nicht in (wählen Sie funktioniert nicht (wie erwartet)

NOT IN verhält sich nicht wie erwartet, wenn die In-Liste NULL enthält Werte.

Wenn irgendwelche Werte NULL sind , dann werden überhaupt keine Zeilen zurückgegeben. Denken Sie daran:In SQL NULL bedeutet "unbestimmter" Wert, nicht "fehlender Wert". Wenn die Liste also NULL enthält Wert, dann vielleicht gleich einem Vergleichswert sein.

Also customerid muss NULL sein in den orders Tabelle.

Aus diesem Grund empfehle ich dringend, immer NOT EXISTS zu verwenden mit einer Unterabfrage anstelle von NOT IN .