merge into 的使用

关于 merge into (oracle)

使用的是oracle数据库。对于merge into 的主要功能就是合并 insert into 以及update。如果存在即update、不存在 insert into。

具体使用 merge into

做添加也做修改

  • merge into 目标表 A
    using 源表 B
    on(A.条件1 = B.条件1 ) --可多个条件 and连接
    when matched then --如果条件匹配就 update
    update
    set A.字段1 = B.字段1,
    A.字段2 = B.字段2
    when not matched then --不匹配就insert
    insert values (B.字段1,B.字段2)

仅添加

  • merge into 目标表 A
    using 源表 B
    on(A.条件1 = B.条件1 ) --可多个条件 and连接
    when not matched then --不匹配就insert
    insert values (B.字段1,B.字段2)

仅修改

  • merge into 目标表 A
    using 源表 B
    on(A.条件1 = B.条件1 ) --可多个条件 and连接
    when matched then --如果条件匹配就 update
    update
    set A.字段1 = B.字段1,
    A.字段2 = B.字段2

当然,UPDATE和INSERT子句可以加WHERE子句(没贴代码),也可以在update后面跟进delete去除。delete只能和update配合,如:

  • merge into 目标表 A
    using 源表 B
    on(A.条件1 = B.条件1 ) --可多个条件 and连接
    when matched then --如果条件匹配就 update
    update
    set A.字段1 = B.字段1
    delete
    where B.字段2 =’???’
    匹配的记录的 B.字段1 更新到 A.字段1 里,并且把 B.字段2 等于 ??? 删除掉

merge into 注意事项

1.在update中的字段,不可以出现在on子句的条件中
2.update和insert子句中可以不用写表名
3、在一个同时存在Insert和Update语法的Merge语句中,总共Insert/Update的记录数,就是Using语句中alias2的记录数
4.源表中作为条件项的不能重复。(否则会报 ‘无法在源中获得一组稳定的行’)
5.当源表作为条件的项含null时,多次执行语句会重复添加条件为null的数据如:

源表源表数据
目标表目标表
执行语句
执行语句

多次执行后目标表数据
多次执行

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值