sql >> Databasteknik >  >> RDS >> Sqlserver

WHERE IN (SELECT NonExistingColumnName) orsakar oväntat beteende

Detta är ett känt problem.

Följande uttalande kommer felaktigt att delete ALLA raderna från användartabellen:

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

även om grupptabellen inte har en kolumn med namnet user_id.

Följande uttalande kommer dock att ge ett fel:

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

REDIGERA

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

Detta ger ett fel eftersom OtherID finns inte i #Orders



  1. Databaskorrpution i MS Access och hur man handskas

  2. jquery ajax fungerar inte utan firebug brytpunkt

  3. Hur man får aktuellt datum och tid med tidszonförskjutning i PostgreSQL

  4. Att skapa ett ett till många polymorft förhållande till doktrin