Oracle merge into 的用法
有時候我們想要批量修改資料的情況,可能是業務需要,也可能是垃圾資料修正
簡單語法如下
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
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可以是表,檢視和查詢後的結果集