我已经在这方面看到了很多变化,但没有什么能完全符合我的目标.
我有一个表TableA
,其中包含用户对可配置问卷的回答.柱子是member_id, quiz_num, question_num, answer_num
.
不知怎的,一些成员提交了两次答案.所以我需要删除重复的记录,但要确保留下一行.
没有primary列,因此可能有两到三行数据完全相同.
是否有删除所有重复项的查询?
我已经在这方面看到了很多变化,但没有什么能完全符合我的目标.
我有一个表TableA
,其中包含用户对可配置问卷的回答.柱子是member_id, quiz_num, question_num, answer_num
.
不知怎的,一些成员提交了两次答案.所以我需要删除重复的记录,但要确保留下一行.
没有primary列,因此可能有两到三行数据完全相同.
是否有删除所有重复项的查询?
在你的桌子上加Unique Index:
ALTER IGNORE TABLE `TableA`
ADD UNIQUE INDEX (`member_id`, `quiz_num`, `question_num`, `answer_num`);
另一种方法是:
在表中添加主键,然后可以使用以下查询轻松删除表中的重复项:
DELETE FROM member
WHERE id IN (SELECT *
FROM (SELECT id FROM member
GROUP BY member_id, quiz_num, question_num, answer_num HAVING (COUNT(*) > 1)
) AS A
);