NOT IN
beter sig inte som förväntat när in-listan innehåller NULL
värden.
Faktum är att om några värden är NULL
, då returneras inga rader alls. Kom ihåg:I SQL, NULL
betyder "obestämt" värde, inte "saknat värde". Så, om listan innehåller någon NULL
värde då det kan vara lika med ett jämförelsevärde.
Så, customerid
måste vara NULL
i orders
bord.
Av denna anledning rekommenderar jag starkt att du alltid använder NOT EXISTS
med en underfråga istället för NOT IN
.