2012年8月29日 星期三

MERGE 命令語法 ( 限 SQL 2008 以上使用 )


試了好幾次,寫好的 MERGE 命令語法完~~~~全不能用。
去爬文後,看到的答案,大多都是說「不支援SQL 2005」。
 
既然 MERGE 這個命令語法,不支援SQL 2005
就記錄一下,以備日後可以參考。


/* MERGE 命令語法 */
 MERGE M目標_產品資料 AS T
 USING M來源_產品資料 AS S
    ON T.產品編號= S.產品編號
  /* 當目標資料表與來源資料表條件吻合時,執行下面動作。*/
  WHEN MATCHED
  THEN UPDATE
          SET T.產品名稱=S.產品名稱, T.單價=S.單價
  /* 當目標資料表(T)中不存,來源資料表(S)中有的產品編號時,執行下面動作。*/
  WHEN NOT MATCHED BY TARGET
  THEN INSERT (產品編號, 產品名稱, 單價,)
       VALUES (S.產品編號, S.產品名稱, S.單價, 0)
  /* 當目標資料表(T)中存在,來源資料表(S)不存在此產品編號時,執行下面動作。*/
  WHEN NOT MATCHED BY SOURCE
  THEN DELETE
; /* 一定要加分號做結尾,否則會出錯。 */


雖然還沒機會可以使用,但MERGE看起來就是可以一次比對完兩個資料表中的差異,並且將來源資料表(SOURCE)中的結果,異動到目標資料表(TARGET),完成UPDATEINSERTDELETE等動作。




沒有留言:

張貼留言