oracle的Merge into语法应用
2013-08-15 09:16
393 查看
一、Merge into介绍 MERGE语句是Oracle9i新增的语法,用来合并UPDATE和INSERT语句。通过MERGE语句,根据一张表或子查询的连接条件对另外一张表进行查询,连接条件匹配上的进行UPDATE,无法匹配的执行INSERT。这个语法仅需要一次全表扫描就完成了全部工作,执行效率要高于INSERT+UPDATE。
二、语法MERGE INTO [your table-name][rename your table here]USING ( [write your query here])[rename your query-sql and using just like a table]ON ([conditional expression here]AND [...]...)WHEN MATHED THEN [here you canexecute some update sql or something else ]WHEN NOT MATHED THEN [executesomething else here ! ]
三、实例应用
本文出自 “萧逸轩” 博客,请务必保留此出处http://guibaobao.blog.51cto.com/908626/1273140
二、语法MERGE INTO [your table-name][rename your table here]USING ( [write your query here])[rename your query-sql and using just like a table]ON ([conditional expression here]AND [...]...)WHEN MATHED THEN [here you canexecute some update sql or something else ]WHEN NOT MATHED THEN [executesomething else here ! ]
三、实例应用
---------------------- --目标表 create table zbak_test_person( id varchar2(32), name varchar2(256), heigh varchar2(8), job_name varchar2(256) ); ---------------------- --插入目标表,测试数据 insert into zbak_test_person (id,name,heigh,job_name) values ('001','test','175','IT'); ---------------------- --创建一个临时表,用于中转数据 create table zbak_test_person_temp( id varchar2(32), name varchar2(256), heigh varchar2(8), job_name varchar2(256) ); ---------------------- --插入临时表,测试数据 insert into zbak_test_person_temp (id,name,heigh,job_name) values ('001','test1','175','IT'); insert into zbak_test_person_temp (id,name,heigh,job_name) values ('002','test2','175','IT'); insert into zbak_test_person_temp (id,name,heigh,job_name) values ('003','test3','175','IT'); insert into zbak_test_person_temp (id,name,heigh,job_name) values ('004','test4','175','IT'); insert into zbak_test_person_temp (id,name,heigh,job_name) values ('005','test5','175','IT'); insert into zbak_test_person_temp (id,name,heigh,job_name) values ('006','test6','175','IT'); insert into zbak_test_person_temp (id,name,heigh,job_name) values ('007','test7','175','IT'); COMMIT; ---------------------- --merge into 语句 merge into zbak_test_person p using (select id, name, heigh, job_name from zbak_test_person_temp) t on (p.id = t.id) when matched then update set p.name = t.name, p.heigh = t.heigh, p.job_name = t.job_name when not matched then insert values (t.id, t.name, t.heigh, t.job_name); commit; ---------------------- --验证数据是否更新成功 select * from zbak_test_person; select * from zbak_test_person_temp;
本文出自 “萧逸轩” 博客,请务必保留此出处http://guibaobao.blog.51cto.com/908626/1273140
相关文章推荐
- Merge Into 语句代替Insert/Update在Oracle中的应用实战
- Oracle merge into delete语法
- Oracle MERGE INTO语法探究
- Oracle merge into语法简介
- Oracle merge into语法简介
- ORACLE 的Merge Into语法 有则更新 无则插入
- Oracle Merge into(代替Insert/Update在Oracle中的应用)示例
- Merge Into 语句代替Insert/Update在Oracle中的应用实战
- Oracle merge into 语法
- Merge Into 语句代替Insert/Update在Oracle中的应用实战
- Merge Into 语句代替Insert/Update在Oracle中的应用实战
- Oracle语法:merge into using
- Oracle的MERGE和MySql的replace into 简单应用介绍
- Oracle的Merge into语法
- merge into之应用
- Oracle PL/SQL 中循环语法语句的应用
- SQL Server2008 Merge应用实例(Merge执行统计库存,复制表,输出$action列 ,output...INTO..)
- Oracle Merge Into 的用法详解实例
- ORACLE merge Into 独立使用的用法
- Oracle 11g merge into log error及并行注意事项