1. 程式人生 > 其它 >SQL中merge into用法

SQL中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);
其中,table_name 指的是更新的表,using()裡邊的指的是資料來源表/檢視/子查詢結果集,condition指的是連線條件,如果滿足連線條件,set 欄位1=值1,欄位2=值2...

如果連線條件不滿足,則停止更新進行插入。
下面我們來舉例說明:

先建立被更新表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);
結果如下:

另:MySql不支援merge into 語法。

一份耕耘,一份收穫,付出就有回報永不遭遇過失敗,因我所碰到的都是暫時的挫折