MySQL中删除多余的重复记录

Posted Milton

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL中删除多余的重复记录相关的知识,希望对你有一定的参考价值。

检查重复记录

-- 检查重复code1
select count(identity) num, identity from event_log 
where code=code1 
group by identity having count(identity) > 1
order by num desc

删除重复记录

DELETE FROM event_log WHERE `code`=code1 AND identity IN (
    SELECT identity from (
        SELECT identity FROM event_log WHERE code=code1 GROUP BY identity HAVING count(identity) > 1
    ) a
) AND id NOT IN (
    SELECT keepId FROM (
        SELECT min(id) keepId FROM event_log WHERE code=code1 GROUP BY identity HAVING count(identity) > 1
    ) b
)

其中 a 和 b 两个中间表的作用是, 避免执行时出现  You can‘t specify target table ‘xxxxx‘ for update in FROM clause 错误

以上是关于MySQL中删除多余的重复记录的主要内容,如果未能解决你的问题,请参考以下文章

MySQL的查询及删除重复记录

mysql重复记录的查询删除方法

MySQL查询表内重复记录

请教mysql 如何按时间删除多余的记录?

MySQL查询表内重复记录

MySQL查询表内重复记录