为什么这个查询会删除所有用户,当profile
表中不存在user_id
列时?
初始查询:
DELETE FROM users
WHERE user_id IN (
SELECT user_id FROM profile
)
AND user_id != 35
AND user_id != 6;
更具体地说,
IN语句查询返回:
SELECT user_id FROM profile;
ERROR: column "user_id" does not exist
LINE 1: SELECT user_id FROM profile;
运行初始查询会返回
DELETE 100
为什么会出现这种情况?
它不应该在错误发生时停止执行或返回false或null吗?
运行PostgreSQL Server 9.0
DELETE FROM users WHERE user_id IN (SELECT p.user_id FROM profile p)
,会出现无效的列名错误。 - Martin Smithprofile
中不包含任何行,则它不会从users
中删除任何行。 - Colin 't Hart