关闭

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

标签: oracle
921人阅读 评论(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)
1
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

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

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

关于oracle多条记录合并为一条记录的方法

今天正还有同学问了一个问题,怎么把两条不同的记录合并成一条记录从数据库里面拿出来,oracle数据库。 拿到之后首先想的是,分两条sql语句去查,然后在程序里做拼接。经过沟通发现,同学的需求不是这个...
  • liuguangqiang
  • liuguangqiang
  • 2016-05-28 21:44
  • 10528

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

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

高效删除Oracle数据库中重复数据,并保留最新一条的方法

在对数据库进行操作过程中我们可能会遇到这种情况,表中的数据可能重复出现,使我们对数据库的操作过程中带来很多的不便,那么怎么删除这些重复没有用的数据呢?   重复数据删除技术可以提供更大的备份容量,实现...
  • Flood_Dragon
  • Flood_Dragon
  • 2013-06-06 12:56
  • 1396

mysql如何删除表中的重复行并保留id较小(或者较大)的记录

在实际录入数据库的过程中,如果数据量比较大的话,难免会因为一些原因,而录入多条重复的记录,那么应该如何操作才能删除重复行,并且保留一条id较大,或者较小的记录呢。         在本例中所用数据表结...
  • qq_28602957
  • qq_28602957
  • 2016-09-07 09:28
  • 3129

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

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

高效删除Oracle数据库中重复数据,并保留最新一条的方法

在对数据库进行操作过程中我们可能会遇到这种情况,表中的数据可能重复出现,使我们对数据库的操作过程中带来很多的不便,那么怎么删除这些重复没有用的数据呢?   重复数据删除技术可以提供更大的备份容量,实...
  • e_wsq
  • e_wsq
  • 2011-08-30 16:08
  • 1223

oracle 删除重复记录 只保留一条

在对数据库进行操作过程中我们可能会遇到这种情况,表中的数据可能重复出现,使我们对数据库的操作过程中带来很多的不便,那么怎么删除这些重复没有用的数据呢?   重复数据删除技术可以提供更大的备份容量...
  • eric145
  • eric145
  • 2013-10-28 14:19
  • 1095

mysql 删除重复数据只保留一条记录

删除重复数据保留name中id最小的记录 delete from order_info where id not in (select id from (select min(id) as id ...
  • iTommy2016
  • iTommy2016
  • 2017-07-15 10:22
  • 447

Oracle 删除重复数据只留一条

转载:http://blog.sina.com.cn/s/blog_69a69e1a010121ts.html   (2012-04-17 10:47:13) 查询及删除重复记录的SQL...
  • An342647823
  • An342647823
  • 2012-09-14 14:40
  • 1507
    个人资料
    • 访问:378980次
    • 积分:5074
    • 等级:
    • 排名:第6412名
    • 原创:154篇
    • 转载:40篇
    • 译文:0篇
    • 评论:42条
    联系方式
    yangtunaiyn@gmail.com
    yangtun@hotmail.com
    aiynmm@163.com
    850102341@qq.com
    博客专栏
    最新评论