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)
【签名→→→】【****知其然知其所以然****】 工具只能帮助我们解决我们认识到的问题,解决不了我们都没理解的问题。 不能再把一切扔给框架、容器、工具! 首先理解你的业务逻辑,理解你要实现的功能, 然后搞清楚框架、容器、工具会帮助我们做什么。 只有理解了自己的业务逻辑,理解了自己的代码,理解了自己要用到的第三方代码, 才能真正完美地实现我们需要的功能!
原文地址:https://www.cnblogs.com/yaowukonga/p/3480576.html