首页 > 解决方案 > 如何从具有超过 10 万条记录的数据库中删除重复的电子邮件?

问题描述

我有一个大约 126K 条目的数据库,它有许多条目具有重复的电子邮件。我想删除所有具有重复条目的条目,只保留最早创建的条目。

我尝试使用以下查询,但它需要永远并且最大化我的服务器带宽。

任何人都可以帮忙吗?

DELETE n1 FROM table n1, table n2 WHERE n1.ID > n2.ID AND n1.email = n2.email


数据库规范

  1. PhpMyAdmin 版本信息:3.5.3
  2. 服务器:通过 UNIX 套接字的 localhost
  3. 软件:MySQL
  4. 软件版本:5.0.67-community - MySQL 社区版 (GPL)
  5. 协议版本:10
  6. 服务器字符集:UTF-8 Unicode (utf8)

标签: mysqlsql

解决方案


也许您可以创建一个包含唯一电子邮件的临时表,然后删除数据库中不止一次的所有电子邮件。

CREATE TEMPORARY TABLE tab_temp
SELECT * FROM table GROUP BY email;

然后

DELETE FROM table
WHERE id NOT IN ( SELECT id FROM tab_temp );

有了它,您可以删除那些重复的


推荐阅读