merge into 的使用

merge into 的使用关于mergeinto(oracle)本人使用的是oracle数据库。对于mergeinto的主要功能就是合并insertinto以及update。如果存在即update、不存在insertinto。具体使用mergeinto做添加也做修改mergeinto目标表Ausing源表Bon(A.条件1=B.条件1)可多个条件and连…

关于 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的数据如:

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/37127.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注