SQL中merge into用法


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

MERGE INTO語法如下:

1 MERGE INTO table_name alias1 
2 USING (table|view|sub_query) alias2
3 ON (join condition) 
4 WHEN MATCHED THEN 
5     UPDATE  
6     SET col1 = col1_val1, 
7         col2 = col2_val2 
8 WHEN NOT MATCHED THEN 
9     INSERT (column_list) VALUES (column_values);  

其中,table_name 指的是更新的表,using()里邊的指的是數據來源表/視圖/子查詢結果集,condition指的是連接條件,如果滿足連接條件,set 字段1=值1,字段2=值2...

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

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

 

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

 

下面准備merge into腳本:

1 MERGE INTO merge_target target 
2 USING (SELECT B.name,B.age,B.target_id FROM merge_source B) source
3 ON (target.id=source.target_id) 
4 WHEN MATCHED THEN 
5     UPDATE 
6     SET target.name = source.name, 
7         target.age = source.age 
8 WHEN NOT MATCHED THEN 
9     INSERT(target.name,target.age) VALUES (source.name,source.age); 

結果如下:

 

另:MySql不支持merge into 語法。
————————————————
版權聲明:本文為CSDN博主「CtrlC V型程序員」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/qq_40992849/article/details/80985417


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM