2023年6月28日 星期三

使用 MERGE 語法新增修改刪除資料

有時會有個需求,是要將 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迴圈 判斷式是否已經到達最後一筆



輸出結果



參考

沒有留言:

張貼留言