Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

WHERE IN (SELECT NonExistingColumnName) причинява неочаквано поведение

Това е известен проблем.

Следният оператор погрешно ще delete ВСИЧКИ редовете от таблицата потребители:

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

дори ако таблицата на групите няма колона с име user_id.

Следният оператор обаче ще изведе грешка:

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

РЕДАКТИРАНЕ

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

Това извежда грешка, защото OtherID не съществува в #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. Създайте изглед в множество бази данни

  2. ADO.Net SQLCommand.ExecuteReader() се забавя или увисва

  3. Как бързо да напишете Select Query в SQL Server - SQL Server / TSQL урок, част 108

  4. Внедряване на пълнотекстово търсене в SQL Server 2016 за начинаещи

  5. Изключение 0x80040154, генерирано по време на изпълнение на прост ssis пакет в MS SQL 2008R2 среда