sql >> Database teknologi >  >> RDS >> Sqlserver

WHERE IN (SELECT NonExistingColumnName) forårsager uventet adfærd

Dette er et kendt problem.

Følgende sætning vil fejlagtigt delete ALLE rækkerne fra brugertabellen:

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

selvom gruppetabellen ikke har en kolonne med navnet bruger_id.

Følgende sætning vil dog give en fejl:

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

REDIGER

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

Dette giver en fejl, fordi OtherID findes ikke i #Orders



  1. SQLPlus forsøger at droppe pakken to gange

  2. Er du sorteret? Tips vedrørende T-SQL-vinduebestilling

  3. PL/SQL udtræk SELECT-sætningskolonnenavne fra tilpasset forespørgsel

  4. Nyttig PHP-databaseklasse