資料庫清理表: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單表去重複