首页 >数据库 >mysql教程 >如何删除 MySQL 中的重复记录并保留每封电子邮件的最新条目?

如何删除 MySQL 中的重复记录并保留每封电子邮件的最新条目?

DDD
DDD原创
2024-11-16 02:28:03558浏览

How Can I Delete Duplicate Records in MySQL Keeping the Latest Entry for Each Email?

保留最新ID的MySQL中有效删除重复记录

问题:

中具有唯一 ID 和电子邮件字段的 MySQL 表,会出现重复的电子邮件地址。任务是消除每封重复电子邮件中除最新(最近插入)之外的所有实例,同时保留其唯一 ID。

解决方案:

问题可以解决通过两步流程识别并消除重复电子邮件。

第 1 步:识别重复邮件电子邮件

select email 
from test
group by email
having count(*) > 1;

此查询返回在表中多次出现的所有电子邮件的列表。

步骤 2:隔离并删除重复记录

delete test
from test
inner join (
  select max(id) as lastId, email
  from test
  where email in (
    select email 
    from test
    group by email
    having count(*) > 1
  )
  group by email
) duplic on duplic.email = test.email
where test.id < duplic.lastId;

此查询在主表(测试)和表之间执行左连接子查询(重复),包含每封重复电子邮件的最新 ID。然后,它会删除 ID 小于最新 ID 的所有重复记录,从而有效地仅保留每封电子邮件最近插入的实例。

替代解决方案:

更简洁的解决方案下面提供了有效的解决方案:

delete from test
where id not in (
  select max(id)
  from test
  group by email
);

此查询识别并删除所有不是重复项的最新实例的记录电子邮件。

以上是如何删除 MySQL 中的重复记录并保留每封电子邮件的最新条目?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn