我发现很难删除重复记录。
想要删除记录
这是我的查询
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
答案 0 :(得分:0)
注意 - 您需要先在桌子的测试副本上执行此操作!
当我这样做时,我发现除非我还包括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个多小时但尚未完成。
答案 1 :(得分:0)
这可能对你有帮助..!
select distinct * into #tmp From EmpDup
delete from EmpDup
insert into EmpDup
select * from #tmp drop table #tmp
select * from EmpDup
请参阅:http://www.besttechtools.com/articles/article/sql-query-to-delete-duplicate-rows
答案 2 :(得分:0)
试试此代码......
string = re.sub("[^A-Za-z]]", ' ', string)
答案 3 :(得分:0)
DELETE n1 FROM table n1, table n2 WHERE n1.a3_seq > n2.a3_seq AND n1.a3_loan = n2.a3_loan