Oracle查询重复数据并删除,只保留一条记录

标签: oracle
1062人阅读 评论(0) 收藏 举报
分类:

转自:http://blog.csdn.net/yangwenxue_admin/article/details/51742426

前言

项目中,在“资源目录-在线编目”中,资源项子表存在多条重发数据,需要进行数据清理,删除重发的数据,最终只保留一条相同的数据。

操作的表名:R_RESOURCE_DETAILS

操作步骤

一、重复记录根据单个字段来判断

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

select * from R_RESOURCE_DETAILS 
where FIELD_CODE 
in(select FIELD_CODE from R_RESOURCE_DETAILS 
group by FIELD_CODE having count(FIELD_CODE) >1)

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

delete from R_RESOURCE_DETAILS 
where (FIELD_CODE) in (select FIELD_CODE from R_RESOURCE_DETAILS 
group by FIELD_CODE having count(FIELD_CODE) >1) 
and rowid not in 
(select min(rowid) from R_RESOURCE_DETAILS group by FIELD_CODE having count(*)>1)

二、重复记录根据多个字段来判断

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

select * from R_RESOURCE_DETAILS a 
where (a.FIELD_CODE,a.DTA_ITEM_NAME) 
in(select FIELD_CODE,DTA_ITEM_NAME from R_RESOURCE_DETAILS 
group by FIELD_CODE,DTA_ITEM_NAME having count(*) > 1)

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

delete from R_RESOURCE_DETAILS a 
where (a.FIELD_CODE,a.DTA_ITEM_NAME) 
in (select FIELD_CODE,DTA_ITEM_NAME from R_RESOURCE_DETAILS 
group by FIELD_CODE,DTA_ITEM_NAME having count(*) > 1) 
and rowid not in (select min(rowid) from R_RESOURCE_DETAILS 
group by FIELD_CODE,DTA_ITEM_NAME having count(*)>1)

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

select * from R_RESOURCE_DETAILS a 
where (a.FIELD_CODE,a.DTA_ITEM_NAME) 
in (select FIELD_CODE,DTA_ITEM_NAME from R_RESOURCE_DETAILS 
group by FIELD_CODE,DTA_ITEM_NAME having count(*) > 1) 
and rowid not in (select min(rowid) from R_RESOURCE_DETAILS 
group by FIELD_CODE,DTA_ITEM_NAME having count(*)>1)
查看评论

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

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

Oracle单表去重多表关联去重

去重方式一(高效):select *from (select a.*, rownum row_num from A_TEST a) xwhere x.row_num in (select min(ro...
  • thl331860203
  • thl331860203
  • 2011-02-21 15:21:00
  • 3254

oracle 查询重复数据并且删除, 只保留一条数据

数据库操作中,经常会因为导数据造成数据重复,需要进行数据清理,去掉冗余的数据,只保留正确的数据 一:重复数据根据单个字段进行判断 1、首先,查询表中多余的数据,由关键字段(name)来查询。 sel...
  • u010069853
  • u010069853
  • 2016-12-08 14:38:49
  • 15856

关于mysql中删除重复记录,并保留重复数据中的一条数据的SQL语句理解

正好想写一条删除重复语句并保留一条数据的SQL,网上查了一部分资料写的很详细,但还是在这里写下自己的理解,以遍后续学习 。如下: 表字段和数据:  SQL语句:  DELETE ...
  • dsiori
  • dsiori
  • 2016-10-13 14:30:42
  • 2890

SQL删除重复数据只保留一条

SQL删除重复数据只保留一条
  • anya
  • anya
  • 2011-05-09 18:39:00
  • 365629

MySQL中删除重复数据只保留一条

用SQL语句,删除掉重复项只保留一条在几千条记录里,存在着些相同的记录,如何能用SQL语句,删除掉重复的呢 1、查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断 SELECT...
  • u014723529
  • u014723529
  • 2016-04-22 11:27:56
  • 53471

Oracle查询重复数据并删除,只保留一条记录

1、查找表中多余的重复记录,重复记录是根据单个字段(Id)来判断 select * from 表 where Id in (select Id from 表 group byId having ...
  • liuhailiuhai12
  • liuhailiuhai12
  • 2016-12-22 15:32:23
  • 162

Oracle查询重复数据并删除,只保留一条记录

1、查找表中多余的重复记录,重复记录是根据单个字段(Id)来判断 select * from 表 where Id in (select Id from 表 group byId having co...
  • doupeihua
  • doupeihua
  • 2015-11-18 10:33:58
  • 431

Sql Server 删除重复记录,只保留一条

delete users where ids not in (select min(ids) from users group by userid,username having(count(*)>1...
  • QingHeShiJiYuan
  • QingHeShiJiYuan
  • 2015-12-25 23:01:13
  • 2615

Sql Server 查询多条重复数据 删除并保留一条

总是不会查重和删除多余数据 delete sysdba.PRODUCT from sysdba.PRODUCT a where exists (select Name,ACTUALID...
  • lutaotony
  • lutaotony
  • 2016-09-28 17:15:25
  • 2121
    个人资料
    专栏达人 持之以恒
    等级:
    访问量: 46万+
    积分: 5848
    排名: 5490
    联系方式
    yangtunaiyn@gmail.com
    yangtun@hotmail.com
    aiynmm@163.com
    850102341@qq.com
    博客专栏
    最新评论