merge into的用法

merge into t1 using t2 on t1.yhangh=t2.yhangh
when matched then update set t1.ygongh_now=t2.ygongh,t1.bilifc_now=t2.bilifc
when not matched then insert (yhangh,ygongh_now,bilifc_now) values(t2.yhangh,t2.ygongh,t2.bilifc)

merge into 的用法:如上例子,表示的是表t1和表t2的字段关联,若关联上则将表t1中的两个字段替换为表t2中查询出来的值,若关联不上,则插入一条数据

实际上应用(曾用到的一个例子)
平时我们用到的关联,可以将两个表通过某个字段关联,即得到新的有关所需要的信息,但表中关联的字段必须唯一,否则会产生笛卡尔积,若需要将两个表通过字段不唯一关联,而又避免笛卡尔积,此时可以使用merge into
若源表t1中有yhangh、ygongh、bilifc
t2中有yhangh、ygongh、bilifc
两个表中yhangh可以相互关联,ygongh和bilifc字段不一致
需要展示成yhangh、ygongh_pre、bilifc_pre、ygongh_now、bilifc_now的样式,若没有的字段显示为空
建立新表a,表中包含所需要的字段
先将表t1中的字段插入表a,ygongh、bilifc对应为ygongh_pre、bilifc_pre
然后使用上述merge into 用法,已经存在yhangh的将ygongh_now,bilifc_now为空的替换为表t2的值
不存在yhangh的插入字段yhangh、ygongh_now、bilifc_now,当人ygongh_pre,bilifc_pre没有值即为空

当然给表t1,t2通过使用row_number() over(partition by bilifc order by yhang desc)各生成组内连续且唯一数字num1,num2,然后根据yhangh,num去full join内关联,也是可以避免笛卡尔积达到上述效果的

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值