MSSQL 的merge關鍵字實現兩個表的同步

功能:  根據源表對目標表執行插入、更新或刪除操作。最典型的應用就是進行兩個表的同步

基本語法:
   MERGE 目標表
  USING 源表
  ON 匹配條件
  WHEN MATCHED THEN
  語句
  WHEN NOT MATCHED THEN
  語句;
MERGE語句最後的分號是不能省略

擴展:
WHEN NOT MATCHED BY TARGET 
  表示目標表不匹配,BY TARGET是默認的
    等價於 WHEN NOT MATCHED THEN

WHEN NOT MATCHED BY SOURCE 
  表示源表不匹配,即目標表中存在,源表中不存在

eg:
-- 源表,目標表
CREATE TABLE [dbo].[表](
    [id] [int] NOT NULL PRIMARY KEY,
    [test] [nvarchar](50) NULL
);

-- 將源表數據,同步到目標表
(兩表紀錄都存在,更新, 
目標表紀錄不存在,插入, 
源表紀錄不存在,目標表紀錄存在, 刪除目標表紀錄)

MERGE 目標表 AS d 
USING 
源表 AS s 
ON s.id = d.id 
WHEN NOT MATCHED BY SOURCE THEN
DELETE
WHEN NOT MATCHED BY TARGET THEN 
INSERT(id, test) 
VALUES(s.id,s.test) 
WHEN MATCHED THEN 
UPDATE SET d.test = s.test;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章