由于merge into平时很少用,但这次用到它来给记录做插入更新,于是简单记下最基本的用法。这里的例子就是给一个表中符合条件的数据做个值计数的更新,如果找到符合ID条件的记录,那么就将其值字段加1,否则就插入这条新的记录,并初始化值。
创新互联致力于成都做网站、网站建设、外贸营销网站建设,成都网站设计,集团网站建设等服务标准化,推过标准化降低中小企业的建站的成本,并持续提升建站的定制化服务水平进行质量交付,让企业网站从市场竞争中脱颖而出。 选择创新互联,就选择了安全、稳定、美观的网站建设服务!
创建测试表并插入数据:
create table test1(id number, val number);
insert into test1 values(101, 1);
insert into test1 values(102, 1);
commit;
select * from test1;
ID VAL
---------- ----------
101 1
102 1
做merge into操作,新的一条数据被插入:
merge into test1 t1
using (select count(*) cnt from test1 where id = 103) t2 on (cnt <> 0)
when matched then
update set val = val + 1 where id = 103
when not matched then
insert values(103, 1);
commit;
select * from test1;
ID VAL
---------- ----------
101 1
102 1
103 1
再执行一个merge into后,数据被更新:
ID VAL
---------- ----------
101 1
102 1
103 2