数据库清理表: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单表去重复