merge用法linux,Merge用法
1.Merge語法:
MERGE [hint] INTO
[schema .] table [t_alias]USING[schema .] { table | view | subquery } [t_alias] ON ( condition )
WHEN MATCHED THENmerge_update_clause
WHEN NOT MATCHED THEN merge_insert_clause;
Normal
0
7.8 磅
0
2
false
false
false
EN-US
ZH-CN
X-NONE
2.merge可使用子句
update/insert/delete,三個子句可單獨使用,也可混用,如'
create table t1(name varchar2(10), amount number(12));
create table t2(name varchar2(10), amount number(12));
insert into t1 values ('a',100);
insert into t1 values ('b',200);
insert into t2 values ('a',30);
insert into t2 values ('c',40);
commit;
merge into t2
using t1
on (t1.name=t2.name)
when matched then
update set t2.amount=t1.amount+t2.amount
when not matched then
insert values(t1.name,t1.amount)
delete where (t2.name='a');
3. merge可加where條件語句,也可加delete子句,其中delete where子句必須放在最后
4. merge常見錯誤
1) 無法在源表中獲取一組穩定的行,MERGE INTO T2 USING T1 ON...的MERGE表達式中,如果一條T2記錄被連接到多條T1記錄,就產生了ORA-30926錯誤,故源表T1在on條件上取得的記錄必須是唯一的,但目標表可有多條對應記錄,且多行均被修改。
Normal
0
7.8 磅
0
2
false
false
false
EN-US
ZH-CN
X-NONE2)merge做delete時只能刪除目標表,不能刪除源表,不管delete where條件是目標表的列還是源表的列,最終都刪除對應的目標表記錄。
3)using條件子句是空值的情況:
-- 在t2不存在name='d'的數據時,下列語句并不會更新t2,因t中并沒有記錄!
merge into t2
using (select * from t2 where name='d') t
on (t.name=t2.name)
when matched then
update set t2.amount=100
when not matched then
insert values ('d',200);
-- 可改寫成如下:
merge into t2
using (select count(*) cnt from t2 where name='d') t
on (t.cnt<>0)
when matched then
update set t2.amount=100
when not matched then
insert values ('d',100);
總結
以上是生活随笔為你收集整理的merge用法linux,Merge用法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 王者荣耀主宰刷新时间间隔多长(如何玩好《
- 下一篇: cpu 型号怎么区分(什么是CPU)