一尘不染

删除MySQL表中的重复条目

sql

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

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


阅读 237

收藏
2021-03-08

共1个答案

一尘不染

您可以很容易地做到这一点,方法是将该查询选择到另一个表中,然后重命名以替换原来的查询。

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

这将删除每个呼叫一个重复的记录。限制的重要性是不要删除任何重复的两行

2021-03-08