我已经看到了许多变化,但是没有什么与我要完成的工作完全匹配。
我有一张表格,TableA其中包含用户对可配置问卷的回答。列为member_id, quiz_num, question_num, answer_num。
不知何故,一些成员两次提交了答案。因此,我需要删除重复的记录,但要确保保留一排。
没有主列,因此可能有两行或三行的数据完全相同。
是否有查询以删除所有重复项?
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
在表上添加唯一索引:
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 );来源:stack overflow