zoukankan      html  css  js  c++  java
  • Oracle merge into的优势

    简介

      Oracle merge into命令,顾名思义就是“有则更新,无则插入”,这个也是merge into 命令的核心思想,在实际开发过程中,我们会经常遇到这种通过两表互相关联匹配更新其中一个表的某些字段的业务,有时还要处理不匹配的情况下的业务。这个时候你会发现随着表的数据量增加,类似这种业务场景的执行效率会比较慢,那是因为你需要多次重复查询两表中的数据,而通过merge into命令,只需要一次关联即可完成“有则更新,无则插入”的业务场景,大大提高语句的执行效率。

    语法

     merge into A表 using B表 on (A表.id = B表.id)
     when matched then --匹配到,则更新A表数据
     update set A.col=B.col
     when not matched then --没匹配到,往A表插入数据
      insert (a,b,c) values ('a','b','c');

    解释:利用B表通过A表.id=B表.id的条件来匹配A表,当满足条件时,可以对A表进行更新,当不满足条件时,可以利用inert语句插入相关数据。

    案例

    merge into student.stuinfo_2018 A
    using student.stuinfo B
    on (A.stuid = B.stuid)
    when matched then --匹配到往A更新数据
      update set A.age = B.age
    when not matched then --没匹配到往A插入数据
      insert
        (a.STUID,
         a.STUNAME,
         a.SEX,
         a.AGE,
         a.CLASSNO,
         a.STUADDRESS,
         a.GRADE,
         a.ENROLDATE,
         a.IDNUMBER)
      values
        (b.STUID,
         b.STUNAME,
         b.SEX,
         b.AGE,
         b.CLASSNO,
         b.STUADDRESS,
         b.GRADE,
         b.ENROLDATE,
         b.IDNUMBER);
  • 相关阅读:
    mybatis中的#和$的区别
    error: 40
    SenseTime Ace Coder Challenge 暨 商汤在线编程挑战赛* B. 我觉得海星
    AtCoder Regular Contest 093 D
    AtCoder Regular Contest 092 D
    2018 蓝桥杯省赛 B 组模拟赛(五) 结果填空:藏宝图
    2018/3/22 美团在线笔试 编程题
    2018/3/22美团在线笔试
    2018 蓝桥杯省赛 B 组模拟赛(一)青出于蓝胜于蓝
    心情小记
  • 原文地址:https://www.cnblogs.com/chenyanbin/p/11718089.html
Copyright © 2011-2022 走看看