有時候我們想要批量修改數據的情況,可能是業務需要,也可能是垃圾數據修正
簡單語法如下
merge into table_1 t1 //t1爲執行批量操作的表
using (table|view|sub_query) t2 //t2 是t1條件判斷的表(也可以是視圖,結果集)
on (join contion) //括號內爲 t1,t2 連接條件 ,類似JOIN語句的連接條件
when matched //如果適配執行語句
then
update set change_1,change_2... where ... | insert (coulmns) values(values) //可以執行更新和插入操作
when not matched //如何不適配執行 ,沒有可以不寫
then
update set change_1,change_2... where ... | insert (coulmns) values(values) //可以執行更新和插入操作
例句如下:
MERGE INTO
TAB1 T1 //需要操作的表
USING
TAB2 T2 //條件參數判斷使用的表,也可以說查詢的結果集,視圖等
ON (T1.CODE=T2.CODE) //條件 ,類似JOIN語句中的ON 連接條件
WHEN MATCHED //如果成立
THEN
UPDATE //更新,也可以是INSERT
SET T1.X=T2.X , T1.Y=T2.Y //可以用逗號連接多個操作
WHERE T2.X IS NOT NULL AND T2.Y IS NOT NULL //如果需要,可以添加WHERE子句判斷,可以不加
WHEN NOT MATCHED //如果不成立,則執行, 此條件如果不需要可以不寫
UPDATE //也可以執行INSERT
SET T1.X=1,T1.Y=2
注意,操作merge操作爲批量操作,語句執行前請確認好條件再執行,防止產生垃圾數據
TAB2可以是表,視圖和查詢後的結果集