欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

SQL中merge into用法詳解

 更新時(shí)間:2025年04月10日 09:33:33   作者:CtrlC V型程序員  
merge into 用法它是一種常見的SQL語法,用于更新,插入和刪除表中的數(shù)據(jù),本文給大家介紹SQL中merge into用法,感興趣的朋友一起看看吧

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

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()里邊的指的是數(shù)據(jù)來源表/視圖/子查詢結(jié)果集,condition指的是連接條件,如果滿足連接條件,set 字段1=值1,字段2=值2...

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

先創(chuàng)建被更新表merge_target,并往其中插入一條數(shù)據(jù)用來更新;

再創(chuàng)建更新表merge_source,用來向被更新表插入數(shù)據(jù);

下面準(zhǔn)備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); 

結(jié)果如下:

另:MySql不支持merge into 語法。

相關(guān)文章

最新評(píng)論