[SQL]SQL Server 2008的新指令-Merge

有關資料庫的討論, 都可以在這發表哦~~
回覆文章
頭像
tim
文章: 1380
註冊時間: 2008年 11月 26日, 00:49

[SQL]SQL Server 2008的新指令-Merge

文章 tim »

參考資料: http://technet.microsoft.com/zh-tw/libr ... 10625.aspx

在資料庫中, 有些分析用的資料, 又或是主副庫存資料, 常常會有個[存在資料就更新, 而不存在就新增(或插入)]的需求. 這個在 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);
其中 InvertoryMaster 就是庫存主表, 而 NewInventory 就是要更新進去的另一個新表, 利用 Merge 指令, 將 InventoryMaster 設為目的, 而 NewInventory 設為來源, 利用 InventoryID 對應, 當 Matched 也就是目的存在時, 就做 Descr 的更新, 若不存在時, 則走後面的 INSERT 語法. 很直覺, 也很方便. 以往的寫法也是就比對兩次做處理, 這裡只要用一道指令就完成囉!!
多多留言, 整理文章, 把經驗累積下來.....
回覆文章