1. 程式人生 > >Oracle查詢重複資料並刪除,只保留一條記錄

Oracle查詢重複資料並刪除,只保留一條記錄

前言

專案中,在“資源目錄-線上編目”中,資源項子表存在多條重發資料,需要進行資料清理,刪除重發的資料,最終只保留一條相同的資料。

操作的表名: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查詢重複資料刪除保留記錄

前言專案中,在“資源目錄-線上編目”中,資源項子表存在多條重發資料,需要進行資料清理,刪除重發的資料,最終只保留一條相同的資料。操作的表名:R_RESOURCE_DETAILS操作步驟一、重複記錄根據單

sql 刪除表中多餘的重複記錄(多個欄位)保留記錄

在網上呢~自己收集了一些關於這方面的知識~  自己整理一下 1.查詢重複記錄 select * from 表名 where 重複欄位 in (select 重複欄位 from 表名 group

面試題:刪除資料庫中帶有重複欄位的記錄保留記錄

select * from tablename where 重複欄位1 in (select 重複欄位1 from tablename group by 重複欄位1,重複欄位2 having count(*)>1)。SQL重複記錄查詢方法:1、查詢表中多餘的重複記錄,重

SQL Server 刪除重複記錄保留記錄

        有張表格之前沒有設計關鍵欄位的唯一約束,導致有時候執行插入操作時不小心執行了多次就出現了重複記錄,後面重新加入唯一約束,由於已經有了重複記錄,無法新增,需要先刪除重複記錄。         看了網上的一些刪除重複記錄的方法(好像都是轉載於同一篇文章,至少看了

oracle 查詢重複資料並且刪除, 保留資料的SQL語句

delete from t_account where feedate in (   select feedate           from t_account   group by feeda

mysql sql 語句 查詢重複資料 刪除重複資料 保留

**#例1:根據手機號customer_id查詢所有重複的資料** SELECT * FROM aad_apply_main WHERE customer_id IN (

MySQL中刪除表中重複資料保留

以為通過命令直接刪除就可以了,總是報錯: delete from test where name in(select name from test as t having count(name)>1) 發現在這隻能建立臨時表格,方法1設計可行: 1. 首先先建立一

Oracle刪除冗餘資料保留

今天去面試,面試官提了一個問題,刪除oracle中的冗餘資料,只保留id最小的一條。當時沒有想明白,回來認真想了一下,總算有了點思路,現將sql貼出來,歡迎大家批評指正。 假設有這樣一個表city表,表中有兩個欄位,id和name。表中有10條資料。 需要刪除冗餘的資料,

oracle過濾某個欄位重複記錄獲取記錄

oracle過濾某個欄位重複記錄,只獲取一條記錄 一,首先想到: 1,關鍵字distinct 2,group by 3,MAX,MIN這樣的函式被稱為聚集函式,和GROUP搭配起來用 但均無法實現,執行結果如下 舉例: 表名:OffsiteOutreachTeam_Lis

mysql查詢重複資料保留記錄

比如我直接select * from movie where name="功夫";有三條資料,但我只希望拿到其中任意一條就行了。可以使用group by 分組因為name是一樣的,所以分組也就是隻有一組

Sql Server 刪除重複記錄保留

delete users where ids not in (select min(ids) from users group by userid,username having(count(*)&g

刪除資料庫中重複記錄保留

利用SQL,刪除掉重複多餘的資料,並且只保留一條資料。 其中包含資料有的是一條資料,有的是多條重複的資料,為了達到同樣的資料只有一條。 思路:先分組查詢,得到只顯示一條的id,再刪除此id以外的資料。

mysql去除重複資料保留

之前寫過的爬蟲裡面,因為種種原因出現了一些重複的資料需要刪除掉。然後發現mysql並沒有直接的去重功能,要自己寫。 查過許多部落格之後發現可以這麼寫。 刪除ppeople 重複的資料,然後重複資料中保留id最小的那一條資料。 delete from people where

如何去掉資料庫重複記錄並且保留記錄

在n條記錄裡,存在著些相同的記錄,如何能用SQL語句,刪除掉重複並保留一條呢? 方法如下: 1、查詢表中多餘的重複記錄,重複記錄是根據單個欄位(peopleId)來判斷 select * from people where peopleId in (select p

oracle刪除重複資料資料

--worked well。可以刪除重複記錄,對於多個欄位也是一樣的原理  delete from T_USER  where id in (select id from T_USER group b

Oracle刪除重複記錄保留資料的幾種方法

1、查詢表中多餘的重複記錄,重複記錄是根據單個欄位(peopleId)來判斷 SELECT * FROM people WHERE peopleid IN ( SELECT peopleid FROM people GROUP BY peopleid

Oracle資料重複

--方法一 select * from tb_supply where rowid=any(select max(rowid) from tb_supply group by phone_id) --方法二 select * from tb_supply where rowid in (selec

oracle 資料重複

oracle中重複記錄只取其中一條 select * from table1 where rowid=any(select max(rowid) from table1 group by field1

資料庫刪除完全重複資料針對每重複資料保留

出現髒資料有時是很頭疼的事情,特別是資料比較多,而且表結構比較複雜的。 最近就遇到一個奇葩問題,資料庫主鍵約束不知道被誰刪掉了,然後資料庫中就出現了很多完全一樣的資料,當然這裡也包括主鍵,因為主鍵約束都被刪除了,肯定可以儲存id完全一樣的資料。 之前遇到過有重複資料,但是不

pg資料庫查詢重複資料可識別空資料重複(二)--優化

在上一篇文章中,實現了查詢重複資料與刪除多餘重複資料的sql編寫:http://blog.csdn.net/u011099093/article/details/78596034; 但是經過匯入百萬資料測試,查詢語句直接卡住沒有結果,於是又花了一天時間對sql進行優化,在借鑑瞭如下地址的方法