oracle merge into 用法詳解

2021-07-09 08:28:41 字數 886 閱讀 9571

merge into 是oracle 9i以後才出現的新的功能。那這個功能是什麼呢?

簡單來說,就是:「有則更新,無則插入」,類似mysql中的replace。在merge into操作乙個物件'a'的時候,要有另外乙個結果集'b'作為源資料,『merge into』通過on將b中的資料與a中的資料按照一定條件'c'進行對比匹配,如果 a中資料滿足c條件(即能和b按條件c匹配上),則進行update操作,如果不滿足條件 'c',則進行insert操作。(請注意這種對應關係)

條件表示式:

merge [into] [schema.]table [alias_a]

using [alias_b]

on when matched then update set -- matched表示滿足condition條件時執行

when not matched then insert values -- not matched表示不滿足condition條件時執行

例項:

merge into t_pub_announcement_read ra using (

select

'1' as announce_id,

'1199' as user_id

from

dual

) rb on (

ra.announce_id = rb.announce_id

and ra.user_id = rb.user_id

)when not matched then

insert (ra.announce_id, ra.user_id)

values

('1', '1199');

Oracle Merge Into 簡單實用

在日常的開發中,常常遇到這樣的需求。在更新表時,如果t表中有資料就進行更新,沒有資料就進行插入 在oracle中有個非常好用的語法 merge into merge into t t1 t 表 t1 表別名 using select a,b from t where t.a 1001 t2 條件表 ...

nginx limit req zone用法詳解

nginx可以使用ngx http limit req module模組的limit req zone指令進行限流訪問,防止使用者惡意攻擊刷爆伺服器。ngx http limit req module模組是nginx預設安裝的,所以直接配置即可。首先,在nginx.conf檔案中的http模組下配置...

Oracle Merge into使用小節(一)

merge into 目標表 a using 源表 b on a.條件欄位1 b.條件欄位1 when matched then update set a.更新字段 b.欄位 when not macthed then insert into a 欄位1,欄位2 values 值1,值2 源表b中查...