有時會有個需求,是要將 A 資料表的內容倒入 B 資料表,或是某個資料來源結構跟B資料表類似,希望比對後新增或修改,常常我們會透過 IF EXIST() 方法來判斷,這次使用 MERGE 語法來試試
設計兩個資料表 #Users_Target、#Users_Source ,其中 Source 代表來源資料表,Target 代表目標更新表,當兩個資料表比對時,若 source 資料表有 target 資料表不存在的資料,則「新增(Insert)」至 target 資料表,若有則「更新(Update)」至 target 資料表
Source Table
Target Table
我們期望 Target Table ID 3,4 兩筆要更新為 五月花 及 七月半,另外新增一筆 ID 5 的藍色監獄
先來看一下 MERGE 語法,記得尾段會有個「;」號
MERGE target 對應 USING source
ON 代表條件依據
WHEN MATCHED 代表符合條件
WHEN NOT MATCHED 代表不符合條件
接著來執行我們設計比對的邏輯,可以看到符合預期
另一個情境,若沒有比對到的就刪除
若是使用常用的 IF EXIST 語法來實作(Update、Insert),其中多了#Users_Source_Inc_RowNo
暫存表,用來記錄包含 RowNo欄位用於逐筆比對,並且使用@MinNo、@MaxNo紀錄最大最小
RowNo,後續使用 While迴圈 判斷式是否已經到達最後一筆
輸出結果
參考
沒有留言:
張貼留言