工作笔记

工作记录

数据重复问题解决方案

问题场景:人员基本库出现人员数据重复 ,除个人编码外其他数据一致,出现两条或多条数据

--首先第一步根据条件分组查询 每条重复数据查询出一条数据添加到备份表
create table a as 
   select T.D401_01, T.D401_02, T.D401_19                  
          from d T                                              
         WHERE T.D401_19 in ('xx','xx')
         and t.d401_37 = 'xx'
         GROUP BY T.D401_01, T.D401_02, T.D401_19       
        having count(t.d401_01) >1  
--根据a表数据查询原表 d 数据添加到备份表b 注:一定要备份原数据  最好备份两份
 create table b as 
select * from d t  where t.d401_19 in ('xx', 'xx')
    and exists( select 1 from a a  where t.d401_01 = a.d401_01
     and t.d401_02 = a.d401_02
     and t.d401_19 = a.d401_19  )
--分组删除重复数据取个人编码最大一条
DELETE FROM b t
 where t.e401_01 not in
       (select max(t1.e401_01) from b t1 group by t1.d401_01, t1.d401_02,t1.d401_19);
--删除d表所有重复
delete from d t  where t.d401_19 in ('xx', 'xx')
    and exists( select 1 from a a  where t.d401_01 = a.d401_01
     and t.d401_02 = a.d401_02
     and t.d401_19 = a.d401_19 )
--恢复数据
INSERT INTO d SELECT *  FROM b

因为个人oracle技术过差,这是前辈教的方法 特此记录!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值