Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

WHERE IN (SELECT NonExistingColumnName) menyebabkan perilaku tak terduga

Ini adalah masalah umum.

Pernyataan berikut akan salah delete SEMUA baris dari tabel pengguna:

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

bahkan jika tabel grup tidak memiliki kolom bernama user_id.

Namun, pernyataan berikut akan menimbulkan kesalahan:

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

EDIT

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

Ini menimbulkan kesalahan, karena OtherID tidak ada di #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. Ubah '01-Sep-2017' menjadi '01/09/2017' di T-SQL?

  2. SQL MAX dari beberapa kolom?

  3. dapatkan string yang dipisahkan koma dari baris

  4. Mitos Kinerja SQL Server yang Berbahaya dan Menyebar

  5. Cara Mengganti Semua Kemunculan String dengan String lain di SQL Server – REPLACE ()