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中查...