ORACLE 去除重复数据小技巧
前言:首先你的表数据低于100万,如果大于话,我的这方法效率就低了!
1.当一张表有重复值时,首先你要明确的指出自己所需要的数据,然后在去重。
2.如果你希望这个字段是唯一,那么你就在 partition by 后面加上这个字段;
如果你希望两个字段组合唯一,则在 partition by 后面加上这两个字段;
如果你希望是三个字段组合唯一,则在 partition by 后面加上这三个字段;
以此论推你想几个字段组合唯一,就在 partition by 后面加上这几个字段;
3.选择上面你需要的模式去重,只要把排序后大于等于2的删掉就可以了!
实例语句:delete from table where rowid in(select rowid from (
select id,name,row_number() over(partition by id order by 1) b from table) where b>=2);
解释:根据ORACLE 自带的虚列 ROWID ,根据它进行删除,先把重复数据给查询出来,也就是把排序后的结果大于等于2的数据rowid,这些数据就是我们要删除的数据;
注:table是表
row_number 是分析函数