首页 > 技术文章 > 【转】oracle 删除重复记录

wdw31210 2015-10-14 17:41 原文

转至:http://blog.163.com/aner_rui/blog/static/12131232820105901451809/

 

2。保留一条(这个应该是大多数人所需要的 ^_^)

Delete HZT Where ID Not In (Select Max(ID) From HZT Group By Title)

注:此处保留ID最大一条记录

1、查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断

select * from people

where peopleId in (select   peopleId from   people group by   peopleId having count(peopleId) > 1)

 

2、删除表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断,只留有rowid最小的记录

delete from people

where peopleId in (select   peopleId from people group by   peopleId   having count(peopleId) > 1)

and rowid not in (select min(rowid) from   people group by peopleId having count(peopleId )>1)

 

3、查找表中多余的重复记录(多个字段)

select * from vitae a

where (a.peopleId,a.seq) in   (select peopleId,seq from vitae group by peopleId,seq having count(*) > 1)

 

 

4、补:


DELETE FROM TAB_1 E
WHERE E.ROWID > (SELECT MIN(X.ROWID)
FROM TAB_1  X
WHERE X.COLUMN1 = E.COLUMN1
AND X.COLUMN2=E.COLUMN2
...

);

推荐阅读