1. 程式人生 > >Oracle 批量修改資料-Merge

Oracle 批量修改資料-Merge

基本概念:

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)
   

  本人親自驗證過