mySQL找到重复并删除它们

mySQL找到重复并删除它们,mysql,Mysql,我想知道是否有办法通过一个查询来实现这一点 似乎当我最初用虚拟数据填充数据库以处理10k记录时,在混乱的地方,所有脚本都额外填充了1044行,其中的行是重复的。我使用 SELECT x.ID, x.firstname FROM info x INNER JOIN (SELECT ID FROM info GROUP BY ID HAVING count(id) > 1) d ON x.ID = d.ID 我想弄明白的是,通过这个单一的查询,我是否可以向其中添加另一个片段,从找到的每个重复

我想知道是否有办法通过一个查询来实现这一点

似乎当我最初用虚拟数据填充数据库以处理10k记录时,在混乱的地方,所有脚本都额外填充了1044行,其中的行是重复的。我使用

SELECT x.ID, x.firstname FROM info x
INNER JOIN (SELECT ID FROM info
GROUP BY ID HAVING count(id) > 1) d ON x.ID = d.ID
我想弄明白的是,通过这个单一的查询,我是否可以向其中添加另一个片段,从找到的每个重复中删除一个匹配的重复


我还意识到ID列应该设置为自动递增,但它不是

,最有效的方法是按以下步骤执行:

步骤1:将非重复(唯一元组)移动到临时表中

CREATE TABLE new_table as
SELECT * FROM old_table WHERE 1 GROUP BY [column to remove duplicates by];
第2步:删除旧表。我们不再需要包含所有重复项的表,所以请删除它

DROP TABLE old_table;
步骤3:将新的\u表重命名为旧的\u表的名称

RENAME TABLE new_table TO old_table;

最有效的方法是按以下步骤进行:

步骤1:将非重复(唯一元组)移动到临时表中

CREATE TABLE new_table as
SELECT * FROM old_table WHERE 1 GROUP BY [column to remove duplicates by];
第2步:删除旧表。我们不再需要包含所有重复项的表,所以请删除它

DROP TABLE old_table;
步骤3:将新的\u表重命名为旧的\u表的名称

RENAME TABLE new_table TO old_table;

我最喜欢的删除重复项的方法是:

ALTER IGNORE TABLE info ADD UNIQUE (ID);
进一步解释(参考,看一看)

UNIQUE-您正在向ID列添加唯一索引


忽略-是标准SQL的MySQL扩展。如果新表中的唯一键上存在重复项,或者启用严格模式时出现警告,则控制ALTER TABLE的工作方式。如果未指定IGNORE,则在出现重复密钥错误时中止复制并回滚。如果指定了IGNORE,则只有第一行用于唯一键上具有重复项的行。其他冲突行将被删除。不正确的值被截断为最接近的匹配可接受值。

我最喜欢的删除重复项的方法是:

ALTER IGNORE TABLE info ADD UNIQUE (ID);
进一步解释(参考,看一看)

UNIQUE-您正在向ID列添加唯一索引


忽略-是标准SQL的MySQL扩展。如果新表中的唯一键上存在重复项,或者启用严格模式时出现警告,则控制ALTER TABLE的工作方式。如果未指定IGNORE,则在出现重复密钥错误时中止复制并回滚。如果指定了IGNORE,则只有第一行用于唯一键上具有重复项的行。其他冲突行将被删除。不正确的值被截断为最接近的匹配可接受值。

我使用的查询通常类似于

Delete from table where id in (
   Select Max(id) from table
    Group by (DUPFIELD)
     Having count (*)>1)

您必须多次运行该查询,因为它一次只删除一个重复的行,但速度很快。

我使用的查询通常类似于

Delete from table where id in (
   Select Max(id) from table
    Group by (DUPFIELD)
     Having count (*)>1)

由于一次只能删除一个重复的行,因此您必须多次运行此操作,但速度很快。

可能重复的可能重复的可能重复的可能重复的您希望非常小心,不要同时删除两个重复的行。DUP还有什么与众不同的地方吗?您是否有任何唯一的字段(如自动增量列)可用于隔离它们?只有在其中一些字段上有不同的其他值,其中一些字段似乎是完全重复的。您可能希望非常小心,不要同时删除这两个字段。DUP还有什么与众不同的地方吗?你有没有什么独特的字段,比如自动增量列,可以用来隔离它们?只有在其中一些字段上有不同的其他值,有些字段看起来是完全重复的。你能进一步解释一下这是怎么回事吗,最后,我不想删除或更改任何内容,直到我确信桌子上的东西都很好。你能进一步解释一下这是怎么回事吗?最后,我不想删除或更改任何内容,直到我确信桌子上的东西都很好