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

WHERE IN (SELECT NonExistingColumnName) gây ra hành vi không mong muốn

Đây là một vấn đề đã biết.

Câu lệnh sau sẽ sai delete TẤT CẢ các hàng từ bảng người dùng:

DELETE FROM users WHERE user_id IN (SELECT user_id FROM groups);

ngay cả khi bảng nhóm không có cột có tên user_id.

Tuy nhiên, câu lệnh sau sẽ gây ra lỗi:

DELETE FROM users WHERE user_id IN (SELECT g.user_id FROM groups g);

Msg 207, Level 16, State 1, Line 1
Invalid column name user_id

CHỈNH SỬA

DELETE TOP(1) FROM #Orders WHERE OrderID IN (SELECT OtherID FROM #LIST_TO_DELETE  )
 Invalid column name 'OtherID'

Điều này gây ra lỗi, bởi vì OtherID không tồn tại trong #Orders



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm thế nào để mô tả bảng trong SQL Server 2008?

  2. Quyền của Máy chủ SQL trên Procs được Lưu trữ với SQL động

  3. Ràng buộc duy nhất chỉ trên cột KHÔNG ĐỦ

  4. Các loại con trỏ máy chủ SQL - Con trỏ tĩnh trong SQL Server là gì | Hướng dẫn sử dụng SQL Server / TSQL

  5. Tại sao các chế độ xem được lập chỉ mục không thể có tổng số MAX ()?