Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

WHERE IN (SELECT NonExistingColumnName) provoque un comportement inattendu

Il s'agit d'un problème connu.

L'instruction suivante va delete par erreur TOUS les lignes de la table des utilisateurs :

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

même si la table des groupes n'a pas de colonne nommée user_id.

L'instruction suivante générera cependant une erreur :

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

MODIFIER

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

Cela génère une erreur, car OtherID n'existe pas dans #Orders