Oracle 批量修改資料 Merge

2021-08-30 17:27:54 字數 1177 閱讀 9663

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 *** = ***,***=*** where 條件 

when not matched then 

insert values (***,***x,***,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)

本人親自驗證過

Oracle 批量修改資料 Merge 使用小結

在近期的需求中遇到了匹配兩表的關聯字段,修改主表的字段業務。由於是批量修改接觸到了oracle的merge 遇到新的知識,本人首先去了解了一下 merge語句是sql語句的一種。在sql server oracle資料庫中可用,mysql postgresql中不可用。merge是oracle9i新...

游標 批量修改資料

批量修改表中資料 declare my cursor cursor 定義游標 for select from table where id 查出需要的集合放到游標中 open my cursor 開啟游標 fetch next from my cursor 讀取第一行資料 while fetch s...

SQL批量修改資料

1 批量替換 期中的年份 以替換為2019年為例 update 資料表名 set 期時間字段 stuff convert nvarchar 23 期時間字段,120 1,4,2019 2 批量替換 期中的 份 以替換為6 為例 update 資料表名 set 期時間字段 stuff convert ...