SQL中merge into用法

從備份表中更新字段到正式表中,使用 UPDATE 批量更新大量的數據,會出現效率低下,有時候甚至卡死的狀況,後面經過使用 MERGE INTO 代替 UPDATE 執行批量更新,會提高執行效率。程序員

MERGE INTO語法以下:.net

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...blog

若是鏈接條件不知足,則中止更新進行插入。
下面咱們來舉例說明:get

 

先建立被更新表merge_target,並往其中插入一條數據用來更新;it

 

 

 

 

再建立更新表merge_source,用來向被更新表插入數據;io

 

 

 

下面準備merge into腳本:table

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 語法。
---------------------
做者:CtrlC V型程序員
來源:CSDN
原文:https://blog.csdn.net/qq_40992849/article/details/80985417
版權聲明:本文爲博主原創文章,轉載請附上博文連接!語法

相關文章
相關標籤/搜索