日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ORACLE中的MERGE语法使用记录

發布時間:2024/4/15 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ORACLE中的MERGE语法使用记录 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

項目中使用到了Oracle的MERGE INTO語句,在這里簡單記錄下使用方法

?

使用場景如下:

存在對一張數據量很大的表,你需要對里面的大量數據進行更新,如果數據不存在,就進行插入的操作。

常規想到的辦法是先根據條件查詢一番,如 果存在,那么就更新,否則就插入?

起始在Oracle9i 后可以用merge into輕輕松松搞定這個問題,避免多次的查詢判斷以及更新插入操作,而且效率更高

?

1.merge into簡介

用來合并UPDATE和INSERT語句。通過MERGE語句,根據一張表或子查詢的連接條件對另外一張表進行查詢,連接條件匹配上的進行SQL(例如UPDATE),無法匹配的執行SQL(例如INSERT)。

這個語法僅需要一次全表掃描就完成了全部工作,執行效率要高于INSERT+UPDATE

?

2.merge into語法

MERGE INTO [target-table] A USING [source-table sql] B ON([conditional expression] and [...]...)

WHEN MATCHED THEN

[UPDATE sql]

WHENNOT MATCHED THEN

[INSERT sql]

;--不要忘記分號

作用:判斷B表和A表是否滿足ON中條件,如果滿足則執行對應sql語句,如果不滿足,則執行對應sql語句

?

另外有說明如下:

  • Merge操作的只是“操作表”,源表不會有任何變化
  • Merge的最后結尾必須是以分號結束的,不能忘了分號
  • 謹記:語法嚴格要求關鍵字之間只能有一個英文空格,不能有多余的空格
  • 不一定要把兩個操作都寫全,可以根據實際情況
  • ?

    3.merge into基礎示例

    ---創建源表 Create Table OriginTable(id Int,caption VarChar(50)); ---創建操作表 Create Table TargetTable(id Int,caption VarChar(50)); --插入測試數據 Insert Into OriginTable(id,caption)VALUES(1,'測試1'); Insert Into OriginTable(id,caption)VALUES(2,'測試2'); Insert Into OriginTable(id,caption)VALUES(3,'測試3'); Insert Into OriginTable(id,caption)VALUES(4,'測試4'); Insert Into TargetTable(id,caption)VALUES(1,'目標表匹配到了源表則update1'); Insert Into TargetTable(id,caption)VALUES(2,'目標表匹配到了源表則update2'); Select * from OriginTable; Select * from TargetTable;
    MERGE INTO TargetTable USING OriginTable ON (TargetTable.id=OriginTable.id)
    WHEN MATCHED --當上面on后的TargetTable.id=OriginTable.id時,則更新,也可以加上自定義的限制條件 MATCHED AND S.id=2
    Then UpDate set TargetTable.caption=OriginTable.caption
    When Not Matched --目標中沒有的id ,在源表中有則插入
    Then Insert Values(OriginTable.id, OriginTable.caption)
    ;--Merge的最后結尾必須是以分號結束的,不能忘了分號 謹記:語法嚴格要求關鍵字之間只能有一個英文空格,不能有多余的空格

    ?

    轉載于:https://www.cnblogs.com/widget90/p/9031790.html

    總結

    以上是生活随笔為你收集整理的ORACLE中的MERGE语法使用记录的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。