程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SqlServer數據庫 >> 關於SqlServer >> SQL Server 2008 T-SQL之Merge語法

SQL Server 2008 T-SQL之Merge語法

編輯:關於SqlServer


  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;--如果來源表無法匹配到,就刪除

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved