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);

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM