我发现很难删除重复记录。
要删除的记录
这里是我的查询
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
NB - 你需要先做到这一点你的桌子上的一个测试副本!
当我做到了,我发现,除非我也包括在内,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用此方法
不知道其他版本。
更新:由于人们对谷歌搜索删除副本会在这里结束虽然关于删除,请注意任择议定书的问题,使用INSERT和DISTINCT的速度要快得多。对于800万行的数据库,下面的查询用了13分钟,而使用DELETE,花了2个多小时,但没有完成。
试试这个代码....
DELETE FROM MyTable
LEFT OUTER JOIN (
SELECT MIN(RowId) as RowId, Col1, Col2, Col3
FROM MyTable
GROUP BY Col1, Col2, Col3
) as KeepRows ON
MyTable.RowId = KeepRows.RowId
WHERE
KeepRows.RowId IS NULL
DELETE n1 FROM table n1, table n2 WHERE n1.a3_seq > n2.a3_seq AND n1.a3_loan = n2.a3_loan
这可能会帮助你..!
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