我在使用数据库中的NOT IN / NOT EXISTS执行DELETE或UPDATE查询时遇到问题。我有2个表USERS
和REMARK
。
提示:Users
表记录= 9880 AND Remark
表记录= 38943
我想删除REMARK
表中profile_id
表中不存在users
的所有数据。
为了执行我使用此查询的操作:
UPDATE remark
SET status = '0'
WHERE profile_id NOT IN (SELECT * FROM users);
Or
DELETE from remark
WHERE profile_id NOT EXISTS (SELECT * FROM users);
Or
DELETE FROM remark
WHERE NOT EXISTS (
select * from users
where users.profile_id = remark. profile_id);
结果=#2013 - 查询期间与MySQL服务器的连接丢失
请帮帮我。
答案 0 :(得分:1)
你很亲密;
UPDATE remark SET status = '0' WHERE profile_id NOT IN
(SELECT * FROM users);
应该很可能是;
UPDATE remark SET status = '0' WHERE profile_id NOT IN
(SELECT profile_id FROM users);
由于*
会从用户中选择所有字段,因此您无法将其与profile_id
进行比较,只需选择要比较的字段即可。
当然,您可以使用相同的WHERE
子句删除
DELETE FROM remark WHERE profile_id NOT IN
(SELECT profile_id FROM users);
答案 1 :(得分:0)
DELETE FROM REMARK
WHERE NOT EXISTS (
SELECT *
FROM USERS
WHERE profile_id=REMARK.profile_id
)
请注意,以下内容不起作用(或任何其他近距离变化):
DELETE FROM REMARK r
WHERE NOT EXISTS (
SELECT *
FROM USERS
WHERE profile_id=r.profile_id
)
由于参考。致谢:http://www.electrictoolbox.com/mysql-delete-records-in-one-table-not-in-another/