首页  >  文章  >  数据库  >  如何删除MySQL中的重复记录并保持最新?

如何删除MySQL中的重复记录并保持最新?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-11-16 12:50:03205浏览

How to Delete Duplicate Records in MySQL While Keeping the Latest?

删除 MySQL 中的重复记录,同时保留最新的

在数据库中,经常会遇到重复记录,特别是在具有唯一标识符的表中。在 MySQL 中,您可能会遇到电子邮件重复的情况,并且您希望仅保留具有最新 ID 的最新电子邮件。

要解决此问题,我们可以采用以下步骤:

  1. 识别重复电子邮件:确定在邮件中多次出现的电子邮件
  2. 查找每个重复电子邮件的最新 ID: 对于每个重复电子邮件,检索代表最近插入的最高 ID。
  3. 删除具有较旧 ID 的重复项: 删除除先前标识的最新 ID 之外的所有重复项步骤。

实现:

考虑以下名为 test 的 MySQL 表,其中包含 id 和 email 列:

| id | email |
|---|---|
| 1 | aaa |
| 2 | bbb |
| 3 | ccc |
| 4 | bbb |
| 5 | ddd |
| 6 | eee |
| 7 | aaa |
| 8 | aaa |
| 9 | eee |

删除重复项电子邮件并保留最新的,我们可以执行以下操作查询:

DELETE test
FROM test
INNER JOIN (
  SELECT MAX(id) AS lastId, email
  FROM test
  GROUP BY email
  HAVING COUNT(*) > 1
) duplic ON duplic.email = test.email
WHERE test.id < duplic.lastId;

此查询检索重复电子邮件的最新 ID,并删除具有旧 ID 的所有重复项。执行查询后,测试表将如下所示:

| id | email |
|---|---|
| 3 | ccc |
| 4 | bbb |
| 5 | ddd |
| 8 | aaa |
| 9 | eee |

仅保留 ID 最高的最新重复项,满足维护表中最新电子邮件地址的要求。

以上是如何删除MySQL中的重复记录并保持最新?的详细内容。更多信息请关注PHP中文网其他相关文章!

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