Merge into用法總結
從備份表中更新欄位到正式表中,使用 UPDATE 批量更新大量的資料,會出現效率低下,有時候甚至卡死的情況,後面通過使用 MERGE INTO 代替 UPDATE 執行批量更新,會提升執行效率。
MERGE INTO語法如下:
MERGE INTO table_name alias1
USING (table|view|sub_query) alias2
ON (join condition)
WHEN MATCHED THEN
UPDATE
SET col1 = col1_val1,
col2 = col2_val2
WHEN NOT MATCHED THEN
INSERT (column_list) VALUES (column_values);
下面我們來舉例說明:
先建立被更新表merge_target,並往其中插入一條資料用來更新;
再建立更新表merge_source,用來向被更新表插入資料;
下面準備merge into指令碼:
MERGE INTO merge_target target
USING (SELECT B.name,B.age,B.target_id FROM merge_source B) source
ON (target.id=source.target_id)
WHEN MATCHED THEN
UPDATE
SET target.name = source.name,
target.age = source.age
WHEN NOT MATCHED THEN
INSERT(target.name,target.age) VALUES (source.name,source.age);
結果如下: