天天看點

oracle資料庫單表查重及去重

資料庫清理表:Truncate Table [表名];

假設單表表名DCM_BMS_BG,其中有ID、BGCODE、BGNAME等字段。其中部分資料重複。

查詢重複資料:

(1)select distinct  BGCODE from DCM_BMS_BG ;

        這句SQL隻能顯示非重複資料。

(2) select   bgcode   from   dcm_bms_bg group by   bgcode having count(bgcode ) > 1           select * from dcm_bms_bg  where bgcode in            (select   bgcode from   dcm_bms_bg group by   bgcode having count(bgcode ) > 1)           order by  bgcode desc ;          這兩句顯示重複資料

去除重複資料:

delete from dcm_bms_bg a where a.rowid! = (

    select max(b.rowid) from dcm_bms_bg  b

    where a.bgcode =b.bgcode and a.bgname = b.bgname

);

rowid 是Oracle自動隐藏的字段,每條記錄都會有一個唯一的rowid,

我們可以通過保留重複字段中那個最大的rowid的記錄,删除其他相同記錄來保證資料的不同。

參考:Oracle單表去重複