Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

T-SQL không trong (chọn không hoạt động (như mong đợi)

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 .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tập lệnh để tự động mở SQL Server Management Studio 2005 từ giao diện khác

  2. Chuỗi con T-SQL - phân tách họ và tên

  3. Phân trang hiệu quả trong SQL Server 2008 R2

  4. SQL để phân tích cú pháp chuỗi khóa-giá trị

  5. Cập nhật cấu hình thư cơ sở dữ liệu (SSMS)