Oracle 删除重复数据只留一条

 1 查询及删除重复记录的SQL语句
 2  
 3 1、查找表中多余的重复记录,重复记录是根据单个字段(Id)来判断
 4  
 5 select * fromwhere Id in (select Id fromgroup byId having count(Id) > 1)
 6  
 7 2、删除表中多余的重复记录,重复记录是根据单个字段(Id)来判断,只留有rowid最小的记录
 8  
 9 DELETE fromWHERE (id) IN ( SELECT id FROMGROUP BY id HAVING COUNT(id) > 1) AND ROWID NOT IN (SELECT MIN(ROWID) FROMGROUP BY id HAVING COUNT(*) > 1);
10  
11 3、查找表中多余的重复记录(多个字段)
12  
13 select * from 表 a where (a.Id,a.seq) in(select Id,seq fromgroup by Id,seq having count(*) > 1)
14  
15 4、删除表中多余的重复记录(多个字段),只留有rowid最小的记录
16  
17 delete from 表 a where (a.Id,a.seq) in (select Id,seq fromgroup by Id,seq having count(*) > 1) and rowid not in (select min(rowid) fromgroup by Id,seq having count(*)>1)
18  
19 5、查找表中多余的重复记录(多个字段),不包含rowid最小的记录
20  
21 select * from 表 a where (a.Id,a.seq) in (select Id,seq fromgroup by Id,seq having count(*) > 1) and rowid not in (select min(rowid) fromgroup by Id,seq having count(*)>1)

 

posted @ 2013-12-18 16:17  古来征战几人回  阅读(249)  评论(0编辑  收藏  举报