sql >> Base de Datos >  >> RDS >> Sqlserver

WHERE IN (SELECT NonExistingColumnName) provoca un comportamiento inesperado

Este es un problema conocido.

La siguiente declaración erróneamente delete TODOS las filas de la tabla de usuarios:

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

incluso si la tabla de grupos no tiene una columna llamada user_id.

Sin embargo, la siguiente declaración arrojará un error:

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

EDITAR

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

Esto arroja un error, porque OtherID no existe en #Orders