Oracle数据库删除重复数据(保留一条)

如何在oracle数据库中删除重复数据?

  • 表:DWGCHF_ZJB         判断是否重复标识:检验批编号
  • 首先进行检验批编号进行分组,筛选出cout(检验批编号)>1的数据
  • 然后根据函数最小值min(rowid)进行检验批编号分组,并且用count(*)>1去反选,把两个条件结合起来就可以删除重复的数据,且保留重复数据的源数据。 
delete from  DWGCHF_ZJB where 检验批编号 in (select 检验批编号 from DWGCHF_ZJB group by 检验批编号  having count(检验批编号)>1 ) and  rowid not in  (select  min(rowid) from DWGCHF_ZJB group  by  检验批编号 having count(*)> 1);