NOT IN
không hoạt động như mong đợi khi trong danh sách chứa NULL
giá trị.
Trên thực tế, nếu bất kỳ giá trị nào là NULL
, sau đó không có hàng nào được trả lại. Hãy nhớ:Trong SQL, NULL
có nghĩa là giá trị "không xác định", không phải "giá trị thiếu". Vì vậy, nếu danh sách chứa bất kỳ NULL
nào giá trị thì nó có thể bằng một giá trị so sánh.
Vì vậy, customerid
phải là NULL
trong orders
bảng.
Vì lý do này, tôi thực sự khuyên bạn nên luôn sử dụng NOT EXISTS
với một truy vấn con thay vì NOT IN
.