教程集 www.jiaochengji.com
教程集 >  数据库  >  oracle  >  正文 Oracle 删除重复数据只留一条的sql代码

Oracle 删除重复数据只留一条的sql代码

发布时间:2014-07-20   编辑:jiaochengji.com
oracle中查询及删除重复记录的SQL语句,供大家学习参考。1、查找表中多余的重复记录,重复记录是根据单个字段(Id)来判断<br /> select * from 表 where Id in (select Id from 表 group byId having count(Id) > 1)

oracle中查询及删除重复记录的SQL语句,供大家学习参考。
 
1、查找表中多余的重复记录,重复记录是根据单个字段(Id)来判断
 

复制代码 代码如下:
select * from 表 where Id in (select Id from 表 group byId having count(Id) > 1)

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

复制代码 代码如下:
DELETE from 表 WHERE (id) IN ( SELECT id FROM 表 GROUP BY id HAVING COUNT(id) > 1) AND ROWID NOT IN (SELECT MIN(ROWID) FROM 表 GROUP BY id HAVING COUNT(*) > 1);

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

复制代码 代码如下:
select * from 表 a where (a.Id,a.seq) in(select Id,seq from 表 group by Id,seq having count(*) > 1)

4、删除表中多余的重复记录(多个字段),只留有rowid最小的记录
 

复制代码 代码如下:
delete from 表 a where (a.Id,a.seq) in (select Id,seq from 表 group by Id,seq having count(*) > 1) and rowid not in (select min(rowid) from 表 group by Id,seq having count(*)>1)

5、查找表中多余的重复记录(多个字段),不包含rowid最小的记录
 

复制代码 代码如下:
select * from 表 a where (a.Id,a.seq) in (select Id,seq from 表 group by Id,seq having count(*) > 1) and rowid not in (select min(rowid) from 表 group by Id,seq having count(*)>1)

您可能感兴趣的文章:
Oracle 删除重复数据只留一条的sql代码
ORACLE 删除重复数据 实例学习
sql 删除重复行(ALL或DISTINCT)
oracle删除数据Delete、Truncate语句的区别分析
总结SQL查询重复记录并删除的方法【老师说值得收藏】
删除txt文件中内容重复的行只保留唯一值的批处理
mysql中delete、truncate删除操作详解
RMAN中catalog和nocatalog区别介绍
PostgreSQL从菜鸟到专家系列教程(5)什么是数据库管理系统
shell 获取 alert_sid.log 错误日志的方法

[关闭]
~ ~