NOT IN
nie zachowuje się zgodnie z oczekiwaniami, gdy na liście znajduje się NULL
wartości.
W rzeczywistości, jeśli jakiekolwiek wartości są NULL
, wtedy żadne wiersze nie są zwracane. Pamiętaj:w SQL NULL
oznacza „nieokreśloną” wartość, a nie „brakującą wartość”. Tak więc, jeśli lista zawiera jakiekolwiek NULL
wartość to może być równe wartości porównawczej.
Tak więc customerid
musi być NULL
w orders
tabela.
Z tego powodu zdecydowanie zalecam, aby zawsze używać NOT EXISTS
z podzapytaniem zamiast NOT IN
.