处理Oracle中的重复记录

转载 2011年01月11日 15:13:00

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、删除表中多余的重复记录(多个字段),只留有rowid最小的记录
delete from vitae a
 where (a.peopleId,a.seq) in (select peopleId,seq from vitae group by peopleId,seq having count(*) > 1)
 and rowid not in (select min(rowid) from vitae group by peopleId,seq having count(*)>1)


5、查找表中多余的重复记录(多个字段),不包含rowid最小的记录
>select * from vitae a
 where (a.peopleId,a.seq) in (select peopleId,seq from vitae group by peopleId,seq having count(*) > 1)
 and rowid not in (select min(rowid) from vitae group by peopleId,seq having count(*)>1)

 

(转载自:http://topic.csdn.net/u/20080508/10/4b56808e-ab77-4d6e-8e75-47f281e8e33c.html

anglelwq的回帖)

Oracle删除重复记录只保留一条数据的几种方法

Oracle删除重复记录只保留一条数据的几种方法 1. 问题描述 BBSCOMMENT表为BBSDETAIL的从表,记录商户评价信息。因为数据倒腾来倒腾去的,有很多重复数据。表结构如下: C...
  • haiross
  • haiross
  • 2014年08月12日 11:53
  • 21025

处理SQL重复记录查询.

  • 2011年07月22日 22:40
  • 84KB
  • 下载

oracle 快速删除大批量数据方法(全部删除,条件删除,删除大量重复记录)

全部删除 如果是删除某个表的所有数据,并且不需要回滚,使用 TRUNCATE 就ok了。关于Trancate 参见这里http://blog.csdn.net/gnolhh168/archive...

【Oracle】删除重复记录

--复习autotrace: SET AUTOTRACE OFF --不生成AUTOTRACE 报告,这是缺省模式 SET AUTOTRACE ON EXPLAIN ...

oracle查找重复记录

oracle查找重复记录   SELECT * FROM t_info a WHERE ((SELECT COUNT(*)           FROM t_info  ...

oracle中去重复记录 不用distinct

用distinct关键字只能过滤查询字段中所有记录相同的(记录集相同),而如果要指定一个字段却没有效果,另外distinct关键字会排序,效率很低 。 select distinct name fr...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:处理Oracle中的重复记录
举报原因:
原因补充:

(最多只允许输入30个字)