这个问题在这里已经有答案了:
删除MySQL中的重复行
(26个答案)
(26个答案)
去年关闭了
如何从MySQL表中删除所有重复数据
例如,使用以下数据:
从名称中选择*;
+----+--------+
|id |名称|
+----+--------+
|1 |谷歌|
|2 |雅虎|
|3 | msn|
|4 |谷歌|
|5 |谷歌|
|6 |雅虎|
+----+--------+
我将使用从名称中选择不同的名称如果是查询,则选择查询
如何使用DELETE来删除重复项,并只保留每个重复项的一条记录
编辑器警告:此解决方案计算效率低下,可能会导致大表连接中断。
NB-您需要首先在表的测试副本上执行此操作
当我这样做时,我发现除非我也包括和n1.id<&燃气轮机;n2.id,它删除了表中的每一行。
-
如果要保留具有最低
id值的行:从名称n1、名称n2中删除n1,其中n1.id>;n2.id和n1.name=n2.name -
如果要保留具有最高
id值的行:从名称n1、名称n2中删除n1,其中n1.id<;n2.id和n1.name=n2.name
我在MySQL 5.1中使用了这种方法
不确定其他版本
更新:因为人们在谷歌上搜索删除重复项的结果就出现在这里
虽然OP的问题是关于删除,但请注意使用插入和区分要快得多。对于一个有800万行的数据库,下面的查询耗时13分钟,而使用DELETE,则耗时2个多小时,但仍未完成
插入到诱惑名(cellId、attributeId、entityRowId、value)
选择不同的单元格ID、attributeId、entityRowId、value
从表名开始;