SQL中merge into用法詳解
從備份表中更新字段到正式表中,使用 UPDATE 批量更新大量的數(shù)據(jù),會出現(xiàn)效率低下,有時候甚至卡死的情況,后面通過使用 MERGE INTO 代替 UPDATE 執(zhí)行批量更新,會提升執(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...
如果連接條件不滿足,則停止更新進行插入。
下面我們來舉例說明:
先創(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)文章
Sql學(xué)習(xí)第一天——SQL 練習(xí)題(建表/sql語句)
來自Madrid且訂單數(shù)少于3的消費者,針對這個要求作出以下:建表 做題分析以及sql語句的寫法,感興趣的朋友可以參考下哈,希望可以幫助到你2013-03-03
SQL語句練習(xí)實例之四 找出促銷活動中銷售額最高的職員
你剛在一家服裝銷售公司中找到了一份工作,此時經(jīng)理要求你根據(jù)數(shù)據(jù)庫中的兩張表得到促銷活動銷售額最高的銷售員2011-10-10
sqlserver2005 行列轉(zhuǎn)換實現(xiàn)方法
sqlserver2005 行列轉(zhuǎn)換實現(xiàn)方法,需要的朋友可以參考下。2009-10-10

