我发现很难删除重复记录。
想要删除记录
这是我的查询
delete from ldataphd.srvalt3 where a3_loan in (select a3_loan from
ldataphd.srvalt3 group by a3_loan having(*) >1)
以上查询删除所有记录。
表:
a3_loan a3_seq
1744 1
1744 32
1844 1
1844 35
预期输出
a3_loan a3_seq
1744 1
1844 1
最佳答案
注意 - 您需要首先在表格的测试副本上执行此操作!
当我这样做时,我发现除非我还包含 AND n1.id <> n2.id,否则它会删除表中的每一行。
1) 如果要保留 id 值最小的行:
DELETE n1 FROM names n1, names n2 WHERE n1.id > n2.id AND n1.name = n2.name
2) 如果要保留 id 值最高的行:
DELETE n1 FROM names n1, names n2 WHERE n1.id < n2.id AND n1.name = n2.name
我在MySQL 5.1中使用了这个方法
不确定其他版本。
更新:由于人们在谷歌上搜索删除重复项最终会出现在这里 尽管OP的问题是关于DELETE的,但请注意,使用INSERT和DISTINCT要快得多。对于800万行的数据库,下面的查询花费了13分钟,而使用DELETE则花费了2个多小时,但仍未完成。
关于mysql - 删除数据库中的重复行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49532076/