oracle中merge的神奇

2021-07-22 08:40:29 字數 1111 閱讀 3029

merge into tb1 a

using (select b.id, c.price from tb2 b left join tb3 c where b.id = c.id) d --這裡using(可以子查詢)

on a.id = d.id

when matched then

udpdate a.price = b.price where d.product_name like '%ct' --update可以加過濾條件

when not matched then

insert (a.price) values (b.price) where d.product_name like '%ct'  --insert物件也可以加過濾條件,已ct結尾的

merge into products p using(select * from newproducts) np

on (p.product_id=np.product_id)

when matched then

update set p.product_name=np.product_name

when not matched then

delete where p.product_id=np.product_id where np.product like '%c'

--清除行的前提是要找到滿足p.product_id=np.product_id的記錄,若t2.name='a' 不滿足t1.name=t2.name,delete不生效!

--delete子句的where必須在最後面

merge into t2

using(select count(*) cnt from t2 where name='d') t  --注意這裡的偽表t一定要存在

on t2.name=t.name

when matched then

update set t2.money=100

when not matched then

insert

values('d',200)  --對t2表進行自我更新,若在t2表中發現name='d'的記錄,就將其

字段更新為100,若記錄不存在,自動增加name='d'的記錄

Oracle中Merge語句效率問題

大家一定都會遇到過資料庫操作中的 update,也一定會考慮過主鍵重複的問題,簡單的解決方法就是先 select 然後根據返回值判斷是 insert 還是 update.因為公司要求這個用乙個語句執行,所以調查了 oracle 自身的 merge 語句,針對效率就調查的結果如下 操作次數為 1 時 ...

opencv中的merge函式

該函式用來合併通道 原型版本一 void merge const mat mv,size t count,outputarray dst 第乙個引數是影象矩陣陣列,第二個引數是需要合併矩陣的個數,第三個引數是輸出 版本二void merge const vector mv,outputarray d...

pandas中merge的用法

pandas中的merge和concat類似,但主要是用於 兩組有key column的資料 統一索引的資料.通常也被用在database的處理當中。import pandas as pd 定義資料集並列印出 left pd.dataframe right pd.dataframe print le...