[SQL]SQL Server 2008的新指令-Merge
發表於 : 2009年 3月 20日, 14:44
參考資料: http://technet.microsoft.com/zh-tw/libr ... 10625.aspx
在資料庫中, 有些分析用的資料, 又或是主副庫存資料, 常常會有個[存在資料就更新, 而不存在就新增(或插入)]的需求. 這個在 SQL Server 2008 中有個新增的指令可以做到, 就是 Merge 這個指令.
他的用法很單純, 也非常直覺, 有點像是程式的指令語法, 範例如下:
其中 InvertoryMaster 就是庫存主表, 而 NewInventory 就是要更新進去的另一個新表, 利用 Merge 指令, 將 InventoryMaster 設為目的, 而 NewInventory 設為來源, 利用 InventoryID 對應, 當 Matched 也就是目的存在時, 就做 Descr 的更新, 若不存在時, 則走後面的 INSERT 語法. 很直覺, 也很方便. 以往的寫法也是就比對兩次做處理, 這裡只要用一道指令就完成囉!!
在資料庫中, 有些分析用的資料, 又或是主副庫存資料, 常常會有個[存在資料就更新, 而不存在就新增(或插入)]的需求. 這個在 SQL Server 2008 中有個新增的指令可以做到, 就是 Merge 這個指令.
他的用法很單純, 也非常直覺, 有點像是程式的指令語法, 範例如下:
代碼: 選擇全部
MERGE InventoryMaster AS im
USING (SELECT InventoryID, Descr FROM NewInventory) AS src
ON im. InventoryID = src. InventoryID
WHEN MATCHED THEN
UPDATE SET im.Descr = src.Descr
WHEN NOT MATCHED THEN
INSERT (InventoryID, Descr) VALUES (src. InventoryID, src.Descr);