oracle 中merge into 的用法

2021-06-17 00:42:56 字數 1433 閱讀 2779

用途:

merge 命令可以用來用乙個表中的資料來修改或者插入到另乙個表。插入或者修改的操作取決於on子句的條件。

該語句可以在同一語句中執行兩步操作,可以減少執行多條insert 和update語句。

merge是乙個確定性的語句,即不會在同一條merge語句中去對同一條記錄多次做修改操作。

語法:1.into 子句

在into子句中指定所要修改或者插入資料的目標表

2.using 子句

在using子句中指定用來修改或者插入的資料來源。資料來源可以是表、檢視或者乙個子查詢語句。

3.on 子句

在on子句中指定執行插入或者修改的滿足條件。在目標表中符合條件的每一行,oracle用資料來源中的相應資料修改這些行。對於不滿足條件的那些行,oracle則插入資料來源中相應資料。

4.when matched | not matched

用該子句通知oracle如何對滿足或不滿足條件的結果做出相應的操作。可以使用以下的兩類子句。

5.merge_update子句

merge_update子句執行對目標表中的字段值修改。當在符合on子句條件的情況下執行。如果修改子句執行,則目標表上的修改觸發器將被觸發。

限制:當修改乙個檢視時,不能指定乙個default值

6.merge_insert 子句

merge_insert子句執行當不符合on子句條件時,往目標表中插入資料。如果插入子句執行,則目標表上插入觸發器將被觸發。

。限制:當修改乙個檢視時,不能指定乙個default值

merge into bonuses d

using (select employee_id, salary, department_id from employees

where department_id = 80) s

on (d.employee_id = s.employee_id)

when matched then update set d.bonus = d.bonus + s.salary*.01

when not matched then insert (d.employee_id, d.bonus)

values (s.employee_id, s.salary*0.01);

merge into pla_domain_br_map pm

using (select t.id,7 as role_id from pla_domain_btn t where t.numb=11010301) t

on (pm.pla_domain_btn_id=t.id)  

when not matched then 

insert (pm.pla_domain_btn_id,pm.pla_role_id)

values ( t.id,t.role_id

) ;

如何將批處理做成類流處理 merge into

例如 隨著人工智慧的不斷發展,機器學習這門技術也越來越重要,很多人都開啟了學習機器學習,本文就介紹了機器學習的基礎內容。需要在前端頁面上設計成實時的資料,但是沒有flink,所以只能把批處理做成類流處理 更新存在的 update employe as em set salary select sal...

oracle中累計求和 oracle累計求和

poj2001 shortest prefixes trie樹應用 沉迷wow又頹了兩天orz,暴雪爸爸要在國服出月卡了.這是要我好好學習嗎?趕緊來刷題了.oj 題目大意是求所有字串裡每乙個字元 硬體相關 jtag介面 jtag joint test action group,聯合測試行動小組 是一...

oracle中累計求和 oracle累計求和

oracle累計求和 將當前行某列的值與前面所有行的此列值相加,即累計求和 方法一 with t as select 1 val from dual union all select 3 from dual union all select 5 from dual union all select ...