标签:
MERGE语句是Oracle9i新增的语法,用来合并UPDATE和INSERT语句。 通过MERGE语句,根据一张表或子查询的连接条件对另外一张表进行查询, 连接条件匹配上的进行UPDATE,无法匹配的执行INSERT。 这个语法仅需要一次全表扫描就完成了全部工作,执行效率要高于INSERT+UPDATE。 */ /*语法: MERGE [INTO [schema .] table [t_alias] USING [schema .] { table | view | subquery } [t_alias] ON ( condition ) WHEN MATCHED THEN merge_update_clause WHEN NOT MATCHED THEN merge_insert_clause; */ 复制代码 merge into users using doctor on (users.user_id = doctor.doctorid) when matched then update set users.user_name = doctor.doctorname when not matched then insert values (doctor.doctorid, doctor.doctorid, ‘8736F1C243E3B14941A59FF736E1B5A8‘, doctor.doctorname, sysdate, ‘T‘, ‘ ‘, doctor.deptid, ‘b319dac7-2c5c-496a-bc36-7f3e1cc066b8‘); 复制代码
when matched then 是对如果可以匹配的进行操作
when not matched then 是对不能匹配的进行操作;
如果有需要可以单独进行新增和修改。
如下:单独进行修改和新增
这是table1和table2的原始数据
merge into TABLE1 t1 USING TABLE2 T2--(table2 可以换成一个select的子语句 "using (select * from tbaletemo) t2") ON (t1.dd1 = t2.aa1) when matched then-- 只是修改 update set t1.dd2 = t2.aa2, t1.dd3 = t2.aa3; commit;
以上脚本是修改table1如果能在table2中可以找到相应的数据(T1.DD1=T2.AA1这是对应的条件)
执行完后的数据是
merge into TABLE1 t1 USING TABLE2 T2 ON (t1.dd1 = t2.aa1) --when matched then --update set t1.dd2 = t2.aa2, t1.dd3 = t2.aa3 WHEN NOT MATCHED THEN insert(t1.dd1,t1.dd2)values(t2.aa1,t2.aa2); --只是新增
oracle 对对表匹配的进行修改匹配不上的可以进行新增 (MERGE INTO)
标签:
原文地址:http://www.cnblogs.com/wlzhang/p/5045366.html