Oracle 批量修改資料-Merge
阿新 • • 發佈:2019-01-09
基本概念:
MERGE語句是SQL語句的一種。在SQL Server、Oracle資料庫中可用,MySQL、PostgreSQL中不可用。MERGE是Oracle9i新增的語法,用來合併UPDATE和INSERT語句。通過MERGE語句,根據一張表(原資料表,source table)或子查詢的連線條件對另外一張(目標表,target table)表進行查詢,連線條件匹配上的進行UPDATE,無法匹配的執行INSERT。這個語法僅需要一次全表掃描就完成了全部工作,執行效率要高於INSERT+UPDATE。
具體來說,MERGE語句會檢查原資料表記錄和目標表記錄。如果記錄在原資料表和目標表中均存在,則目標表中的記錄將被原資料表中的記錄所更新(執行Update操作);如果目標表中不存在的某(些)記錄,在原資料表中存在,則原資料表的這(些)記錄將被插入到目標表中(執行Insert操作)。
在Oracle 10g之前,merge語句支援匹配更新和不匹配插入兩種簡單的用法,在10g中Oracle對merge語句做了增強,增加了條件選項WHERE和DELETE操作.
Merge語法:
merge into 目標表名
using( select * from 根據表名)
on 關聯條件
when matched then
update set xxx = xxx,xxx=xxx where 條件
when not matched then
insert values (xxx,xxxx,xxx,xx )
注:批量修改和增加 可以一個使用,也可以分開使用,根據實際情況來選擇
如:
merge into ASS_DUAL_1 t using (select * from ASS_DUAL_2) b on (t.id= b.id) --修改 when matched then update set t.DEPRE_MONEY= b.Depre_Money , t.cur_money = b.cur_money --增加 when not matched then insert values (xx,xx,xx,xx)
本人親自驗證過