开发者社区 问答 正文

如何删除没有临时表的MySQL表中的所有重复记录??mysql

我已经看到了许多变化,但是没有什么与我要完成的工作完全匹配。

我有一张表格,TableA其中包含用户对可配置问卷的回答。列为member_id, quiz_num, question_num, answer_num。

不知何故,一些成员两次提交了答案。因此,我需要删除重复的记录,但要确保保留一排。

没有主列,因此可能有两行或三行的数据完全相同。

是否有查询以删除所有重复项?

展开
收起
保持可爱mmm 2020-05-17 17:25:30 480 分享 版权
1 条回答
写回答
取消 提交回答
  • 在表上添加唯一索引:

    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

    2020-05-17 17:32:41
    赞同 展开评论