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单表去重复



        




猜你喜欢

转载自blog.csdn.net/xuerwang/article/details/80677085