Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

T-SQL non in (selezionare non funzionante (come previsto)

NOT IN non si comporta come previsto quando l'in-list contiene NULL valori.

In effetti, se qualsiasi valore è NULL , quindi non vengono restituite righe. Ricorda:in SQL, NULL significa valore "indeterminato", non "valore mancante". Quindi, se l'elenco contiene qualsiasi NULL valore allora potrebbe essere uguale a un valore di confronto.

Quindi, customerid deve essere NULL negli orders tabella.

Per questo motivo, ti consiglio vivamente di utilizzare sempre NOT EXISTS con una sottoquery anziché NOT IN .