Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

WHERE IN (SELECT NonExistingColumnName) powoduje nieoczekiwane zachowanie

To znany problem.

Poniższa instrukcja błędnie delete WSZYSTKIE wiersze z tabeli użytkowników:

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

nawet jeśli tabela grup nie zawiera kolumny o nazwie user_id.

Poniższa instrukcja spowoduje jednak wyświetlenie błędu:

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

EDYTUJ

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

Spowoduje to zgłoszenie błędu, ponieważ OtherID nie istnieje w #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. T-SQL Cast a konwertuj

  2. Częściowe słowa w dowolnym tekście na serwerze SQL

  3. Zrozumienie rozmiaru pamięci „czas” w SQL Server

  4. Sprawdź/zmień poziom zgodności bazy danych w SQL Server (SSMS)

  5. JBoss ponownie łączy się po przekroczeniu limitu czasu połączenia