删除MySQL表中的重复条目

参见英文答案 > Remove duplicate rows in MySQL                                    21个
我有一个几千行的表.该表包含两列,名称和电子邮件.我有几个重复的行,例如:

>约翰史密斯| john@smith.com
>约翰史密斯| john@smith.com
>埃里卡史密斯| erica@smith.com
>埃里卡史密斯| erica@smith.com

删除所有重复结果的最简单方法是什么?例如,这样表的内容将= SELECT name,DISTINCT(email)FROM table.

最佳答案
您可以通过将该查询选择到另一个表中,然后重命名以替换原始表来轻松完成此操作.

CREATE TABLE `table2` (
  `name` varchar(255), 
  `email` varchar(255), 
  UNIQUE KEY `email` (`email`));
INSERT INTO `table2` SELECT `name`, DISTINCT(`email`) FROM `table`;
RENAME TABLE `table` TO `table1`;
RENAME TABLE `table2` TO `table`;

请注意,此CREATE应调整为您的实际表格格式.我在电子邮件字段中添加了唯一键,作为关于如何首先防止重复的建议.

或者,你可以循环这个

DELETE FROM `table` 
WHERE `email` IN (
  SELECT `email` FROM `table` GROUP BY `email` HAVING count(*) > 1
) LIMIT 1

哪个会删除每个呼叫的一个重复记录.限制的重要性在于不删除任何重复的两行

转载注明原文:删除MySQL表中的重复条目 - 代码日志