保留最新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中文网其他相关文章!