提问人:Gamer In The Game 提问时间:11/16/2023 更新时间:11/16/2023 访问量:31
在MySQL中使用NOT IN语句删除某些列上的相同记录
Delete same records on some columns usin NOT IN statement in MySQL
问:
我有如下表格:
其中包含session_id、user_id、quiz_id question_id列上的相同记录。 所以,我只想保留其中一个,删除其他的。我尝试了以下查询:
DELETE FROM su_submitted_answers WHERE `id` NOT IN (SELECT id from su_submitted_answers GROUP BY session_id, user_id, quiz_id, question_id );
但查询不会影响任何记录。此外,ID 列中没有 NULL 值。
解决我的情况也是必要的,但“为什么上面的查询不起作用”是必不可少的问题。感谢您的帮助。
答:
1赞
Akina
11/16/2023
#1
使用多表 DELETE:
DELETE t1
FROM su_submitted_answers t1
JOIN su_submitted_answers t2 ON (t1.session_id, t1.user_id, t1.quiz_id, t1.question_id) = (t2.session_id, t2.user_id, t2.quiz_id, t2.question_id)
WHERE t1.id < t2.id
此查询将删除上述列重复的所有行,但其中具有最大值的行之一除外。id
评论