oracle高效的批量删除重复数据

       如何高效删除重复数据?用诸如:

rowid,id相等,速度太慢了。对于大数据量的表的做插入,效率最好的是用临时表。

 

基本上就是这么一流程:

 

drop table t1

create table t1 as select ctemp.id ,max(ctemp.name) name,
max(ctemp.city) city  from  cardtypeid_temp  ctemp 
group by ctemp.id 

truncate table cardtypeid_temp

insert into cardtypeid_temp  select * from t1

 

 

在创建临时表的时候,没有用distinct * ,因为*是整行,如果id(唯一)相同,name不同,在用distinct的时候

任何会认为不同,这显然是不可以的。

如果用 distinct id,name意思是与distinct * 一样的。

 

由于这里我只判断id是重复列,所以分组的时候用就只了id,而其他的列表项除了ctemp.id外,都是单行

函数,必须要取别名。

注意一定要列出原表的全部字段

才能在往原表里面插入的时候就不会报错。好像是报告value is not enough。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值