我已经在这方面看到了很多变化,但没有什么能完全符合我的目标.

我有一个表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
            );

Mysql相关问答推荐

如何将MySQL与AS&Quot;语法一起用于存储过程返回的表?

加载数据本地infile,字段中有双引号和逗号

MySQL:一个查询中的SELECT语句,用于从一个表中检索所有数据,并仅从另一个表中检索一个数据

Mysql - Select 匹配某些条件的两条记录之间经过的最大天数

global max_connections 和 spring.hikari.maximumPoolSize 有什么区别?

多个 FULLTEXT 索引上的 MySQL SELECT.结果极其缓慢

MySQL - 单词边界的正则表达式,不包括下划线(连接标点符号)

当用它的别名替换 (MAX(s.salary) - MIN(s.salary) 它将不起作用.. 为什么?

组平SQL查询结果

MYSQL REGEXP_REPLACE 在数字之后

查询以从约会表中获取可用空档

查询给出错误时的 mySQL Group_Concat 和 Case

Select 在同一天售出不同活动门票的收银员

在 MySQL 的存储过程中调用存储过程

当您无法修复表时,如何修复 MySQL不正确的密钥文件错误?

docker-entrypoint-initdb 中的 MySQL 脚本未执行

在 MySQL 中检测 utf8 损坏的字符

如何在 MySQL 中为用户设置默认架构

从mysql中的大表中快速 Select 随机行

mysql GROUP_CONCAT 重复