oracle 对对表匹配的进行修改匹配不上的可以进行新增 (MERGE INTO)
2015-12-14 15:23
543 查看
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有两个或者多个实例时,用SID来区分目前oralce使用的是哪个实例。
- oracle查看对象信息
- 45 个非常有用的 Oracle 查询语句
- oracle如何判断字段是数字还是字符
- oracle插入多表(insert all/first)
- 【转】Oracle 10g RAC TAF
- lvm add new hard disk for oracle linux 5.8
- Oracle数据库Decode()函数的使用方法
- oracle 失效对象
- oracle函数--关于日期
- oracle分页
- oracle删除恢复
- oracle 的服务器进程(PMON, SMON,CKPT,DBWn,LGWR,ARCn,MMON)
- oracle锁
- Oracle Apex 实用笔记系列 7 - 用Region Selector实现标签功能
- Oracle RMAN 映像备份(Image copies)基本原理与方案
- oracle 创建 用户 表空前 授权示例
- oracle 创建 用户 表空前 授权示例
- Oracle递归查询
- Oracle中的Union、Union All、Intersect、Minus