删除MySQL表中的重复条目

Dav*_*542 3 mysql sql

我有一个几千行的表.该表包含两列,nameemail.我有几个重复的行,例如:

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

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

Umb*_*lla 7

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

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`;
Run Code Online (Sandbox Code Playgroud)

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

或者,你可以循环这个

DELETE FROM `table` 
WHERE `email` IN (
  SELECT `email` FROM `table` GROUP BY `email` HAVING count(*) > 1
) LIMIT 1
Run Code Online (Sandbox Code Playgroud)

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