Merge 文法執行個體

來源:互聯網
上載者:User
--Merge 文法是對錶進行插入,更新,刪除這三個操作的合并。--根據與源表聯結的結果,對目標表執行插入、更新或刪除操作。--MERGE 文法包括如下五個主要子句:--  MERGE 子句用於指定作為插入、更新或刪除操作目標的表或視圖。--  USING 子句用於指定要與目標聯結的資料來源。--  ON 子句用於指定決定目標與源的匹配位置的聯結條件。--  WHEN 子句用於根據ON 子句的結果指定要執行的操作。--  OUTPUT 子句針對更新、插入或刪除的目標對象中的每一行返回一行。  --樣本: USE tempdbGO--建立表AIF NOT OBJECT_ID('[A]') IS NULL    DROP TABLE [A]GOCREATE TABLE A(ID INT,ACOL VARCHAR(10))GOINSERT A VALUES(1,N'A')INSERT A VALUES(2,N'B')INSERT A VALUES(3,N'C')INSERT A VALUES(6,N'X') --此記錄在B表中不存在,刪除GO--建立表BIF NOT OBJECT_ID('[B]') IS NULL    DROP TABLE [B]GOCREATE TABLE B(ID INT,BCOL VARCHAR(10),XCOL VARCHAR(10))GOINSERT B VALUES(1,N'A',N'T')  --1的ID與A表ID匹配且指定值與A表指定值對應相同,不變INSERT B VALUES(2,N'P',N'O')  --2和的ID與A表ID匹配,指定值與A表指定值對應不同,更新INSERT B VALUES(3,N'P',N'N')INSERT B VALUES(4,N'L',N'Y')  --4和的ID與A表ID匹配,指定值在A表中對應不存在,插入INSERT B VALUES(5,N'E',N'S')  GO--開始合并兩個表:MERGE A --要處理的表USING B --參照的表ON A.ID=B.ID --關聯條件WHEN NOT MATCHED THEN INSERT VALUES(B.ID,B.BCOL) --如果要處理表沒有參照表上的記錄,則插入WHEN MATCHED THEN UPDATE SET A.ACOL=B.BCOL --如果記錄匹配,就更新目標表的匹配行WHEN NOT MATCHED BY SOURCE THEN DELETE --如果要處理表的記錄在參照表上不存在,則刪除OUTPUT $action, Inserted.*, Deleted.*; --相當於輸出以上語句的操作記錄 /*--result:$action    ID          ACOL       ID          ACOL---------- ----------- ---------- ----------- ----------INSERT     4           L          NULL        NULLINSERT     5           E          NULL        NULLUPDATE     1           A          1           AUPDATE     2           P          2           BUPDATE     3           P          3           CDELETE     NULL        NULL       6           X (6 行受影響)*/--看看A表更新成什麼樣:SELECT * FROM A/*ID          ACOL----------- ----------1           A2           P3           P4           L5           E (5 行受影響)*/--再變換一個欄位MERGE A --要處理的表USING B --參照的表ON A.ID=B.ID --關聯條件WHEN NOT MATCHED THEN INSERT VALUES(B.ID,B.XCOL) WHEN MATCHED THEN UPDATE SET A.ACOL=B.XCOL WHEN NOT MATCHED BY SOURCE THEN DELETEOUTPUT $action, Inserted.*, Deleted.*; /*--result:$action    ID          ACOL       ID          ACOL---------- ----------- ---------- ----------- ----------UPDATE     1           T          1           AUPDATE     2           O          2           PUPDATE     3           N          3           PUPDATE     4           Y          4           LUPDATE     5           S          5           E (5 行受影響)*/--再看看現在的A表像什麼樣SELECT * FROM A/*ID          ACOL----------- ----------1           T2           O3           N4           Y5           S (5 行受影響)*/

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.