0

我在数据库中使用 NOT IN / NOT EXISTS 执行 DELETE 或 UPDATE 查询时遇到问题。我有 2 张桌子USERSREMARK.

提示:Users表记录 = 9880 ANDRemark表记录 = 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 服务器的连接丢失

请帮我。

4

2 回答 2

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); 
于 2013-01-15T19:52:49.680 回答
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/

于 2013-07-05T06:15:17.713 回答