Merge into 详细介绍

MERGE语句是 oracle 9i 新增的语法,用来合并 UPDATE 和 INSERT 语句。

通过MERGE语句,根据一张表或子查询的连接条件对另外一张表进行查询,

连接条件匹配上的进行UPDATE,无法匹配的执行INSERT。

这个语法仅需要一次全表扫描就完成了全部工作,执行效率要高于INSERT+UPDATE。

 

create table test1(eid number(10), name varchar2(20)); 
create table test2(eid number(10), name varchar2(20));  
delete  test2
commit;
merge into test2
using test1
on (test1.eid=test2.eid)
when matched then
  update set name = 'aaa' where test1.eid=1001
when not matched then
  insert
    (eid, name)
  values
    (test1.eid, test1.name) where test1.eid=1001;
commit;

select * from test1; 
select * from test2; 

注:对子表中的N条数据进行有则修改,无则添加操作,需要用到主表关系

 

你可能感兴趣的:(oracle,sql)