Merge語法是對插入,更新,刪除這三個操作的合並。根據與源表聯接的結果,對目標表執行插入、更新或刪除操作。例如,根據在另一個表中找到的差異在一個表中插入、更新或刪除行,可以對兩個表進行同步。
我這裡用一個簡單的例子來解釋一下
USE tempdb
GO
--創建一個臨時的訂單表
CREATE TABLE Orders(OrderID INT,CustomerID NCHAR(5))
GO
--往這個表中添加兩行記錄
INSERT INTO Orders VALUES(1,N'AAAAA')
INSERT INTO Orders VALUES(2,N'BBBBB')
GO
--通過生成表查詢,產生另外一個架構一模一樣的表,但只是復制了第一行數據過去
SELECT * INTO Orders2 FROM Orders WHERE OrderID=1
GO
--將第二個表的數據進行更新
UPDATE orders2 SET CustomerID=N'DDDDD'
--合並兩個表
MERGE Orders o
USING Orders2 o2 ON o2.OrderID=o.OrderID
WHEN MATCHED THEN UPDATE SET O.CustomerID=o2.CustomerID--如果匹配到了,就更新掉目標表
WHEN NOT MATCHED THEN INSERT VALUES(o2.OrderID,o2.CustomerID)--如果匹配不到,就插入
WHEN NOT MATCHED BY SOURCE THEN DELETE;--如果來源表無法匹配到,就刪除