oracle merge into用法
转载:http://blog.163.com/duanpeng3@126/blog/static/885437352011724104741817/
在 平时更新数据时,经常有这样一种更新,即将目标表中的数据与源表对比,如果存在记录,则根据源表中的值更新目标表中的数据,如果不存在的话,则新增入目标 表中。我们当然可以使用两条语句来处理这类数据。但这其中有可能会出现异常。因此,Oracle在9i版本新增了MERGE语句,来合并UPDATE和 INSERT语句。 该语句可以在同一语句中执行两步操作,可以减少执行多条insert 和update语句。merge是一个确定性的语句,即不会在同一条merge语句中去对同一条记录多次做修改操作。
具体语法为:
MERGE [hint] 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;
1.into 子句
在into子句中指定所要修改或者插入数据的目标表
2.using 子句
在using子句中指定用来修改或者插入的数据源。数据源可以是表、视图或者一个子查询语句。
3.on 子句
在on子句中指定执行插入或者修改的满足条件。在目标表中符合条件的每一行,oracle用数据源中的相应数据修改这些行。对于不满足条件的那些行,oracle则插入数据源中相应数据。
4.when matched | not matched
用该子句通知oracle如何对满足或不满足条件的结果做出相应的操作。可以使用以下的两类子句。
5.merge_update子句
merge_update子句执行对目标表中的字段值修改。当在符合on子句条件的情况下执行。如果修改子句执行,则目标表上的修改触发器将被触发。
限制:当修改一个视图时,不能指定一个default值
6.merge_insert 子句
merge_insert子句执行当不符合on子句条件时,往目标表中插入数据。
下面列出merge的基本用法 (此处目标表和源表表结构相同)
1) matched 和not
matched 同时使用
merge into 目标表
a
using 源表 b on
(关联条件 a.字段1 = b.字段1)
when MATCHED then
update set a.字段2=b.字段2,......
when NOT MATCHED then
insert(a.字段2,a.字段3)
values(b.字段2,b.字段3);
2) 只有not
matched clause,也就是只插入不更新
merge into 目标表 a
using 源表b on
(关联条件 a.字段1 = b.字段1)
when NOT MATCHED then
insert(a.字段2,a.字段3)
values(b.字段2,b.字段3);
3) 只有matched
clause, 也就是只更新不插入
merge into 目标表
a
using 源表 b on
(关联条件 a.字段1 = b.字段1)
when MATCHED then
update set a.字段2=b.字段2,......
另外,merge命令的update部分可以包含一个delete子句。delete子句(有其自己的where子句)可以删除目标表中被merge更新的
行。delete...where子句可以计算更新值,而不是目标表中的初始值。如果目标表中的行符合delete...where条件但不在merge
所作用(就如on条件所定义的)的行集范围内,就不会删除。
具体语法为:
using 源表 b on
(关联条件 a.字段1 = b.字段1)
when MATCHED then
update set a.字段2=b.字段2,......
delete where (a.字段5=b.字段5) ;
注意:此处的源表可以不仅仅是一张表,也可以是查询出来的结果集。此命令在db2中也同样适用。
oracle merge into用法的更多相关文章
- Oracle Merge Into 用法详解
原文:http://blog.csdn.net/EdgenHuang/article/details/3587912 Oracle9i引入了MERGE命令,你能够在一个SQL语句中对一个表同时执行in ...
- ORACLE MERGE INTO UPDATE DELETE 用法
ORACLE MERGE INTO UPDATE DELETE 用法 使用该MERGE语句从一个或多个源中选择行以进行更新或插入表或视图.您可以指定条件以确定是更新还是插入目标表或视图. 此语句是组合 ...
- Oracle merge into
Oracle中Merge into用法总结 文件来源:(http://blog.csdn.net/yuzhic/article/details/1896878) 有一个表T,有两个字段a.b,我们想在 ...
- SQL2008中Merge的用法
在SQL2008中,新增了一个关键字:Merge,这个和Oracle的Merge的用法差不多,只是新增了一个delete方法而已.下面就是具体的使用说明: 首先是对merge的使用说明: merge ...
- SQL2008中Merge的用法(轉載)
在SQL2008中,新增了一个关键字:Merge,这个和Oracle的Merge的用法差不多,只是新增了一个delete方法而已.下面就是具体的使用说明: 首先是对merge的使用说明: merge ...
- SQL2008中Merge的用法(转)
在SQL2008中,新增了一个关键字:Merge,这个和Oracle的Merge的用法差不多,只是新增了一个delete方法而已.下面就是具体的使用说明: 首先是对merge的使用说明: merge ...
- ORACLE 中ROWNUM用法总结(转)
ORACLE 中ROWNUM用法总结! 对于 Oracle 的 rownum 问题,很多资料都说不支持>,>=,=,between...and,只能用以上符号(<.<=.!=) ...
- Oracle Merge into 详细介绍
Oracle Merge into 详细介绍 /*Merge into 详细介绍MERGE语句是Oracle9i新增的语法,用来合并UPDATE和INSERT语句.通过MERGE语句,根据一张表或子查 ...
- Oracle merge
oracle merge 語法:
随机推荐
- nodejs处理图片、CSS、JS链接
接触Nodejs不深,看到页面上每一个链接都要写一个handler,像在页面显示图片,或者调用外部CSS.JS文件,每个链接都要写一个handler,觉得太麻烦,是否可以写个程序出来,能够自动识别图片 ...
- HADOOP HA切换后出现MSSING BLOCK
HDFS HA切换后missing block问题分析 今天因为调整一个NN的参数,所以切换一个ACTIVE的NN,发生了MISSING BLOCK. 怀疑可能是EDITLOG没有同步完成,可能是误报 ...
- 架构实例之Demo_JSP
架构实例之Demo_JSP 1.开发工具和开发环境 开发工具: MyEclipse10,JDK1.6.0_13(32位),Tomcat7.0(32位),mysql5.7.13 开发环境:W ...
- MIDI信息为什么不能通过FL Studio输出
讲解这个问题之前,小编先给大家科普一下什么是MIDI.所谓的MIDI其实只是数字信号,和我们熟知的乐谱有点像.它的作用就是能很好的传达什么时间演奏什么音,这个音要演奏多久等信息,就如同我们演唱会中指挥 ...
- python-异常处理
一.异常 异常是什么? 就是影响程序正常执行的事件,异常在程序执行的过程中发生,脚本发生异常时,我们需要捕获它,否则程序就会终止. 异常处理: 1.捕获异常:try:...except ..... w ...
- Nginx Rewrite规则
location = / { # 精确匹配 / ,主机名后面不能带任何字符串 [ configuration A ] } location / { # 因为所有的地址都以 / 开头,所以这条规则将匹配 ...
- dwarf格式解析
debug_line中包含的是地址和源文件行之间的关系 我今天想搞清楚的是文件的C代码和汇编代码之间的关系: 对这块之前一直是迷迷糊糊的,发现这个问题已经严重影响到bug的定位了. 之前感觉C和汇编不 ...
- java多线程系类:JUC原子类:03之AtomicLongArray原子类
概要 AtomicIntegerArray, AtomicLongArray, AtomicReferenceArray这3个数组类型的原子类的原理和用法相似.本章以AtomicLongArray对数 ...
- webapi相关知识
1.从uri中获取参数 :后端:[FromUri] 2.从uri中获取数组参数:后端:[FromUri]string[] type 前端:type[]=1&type[]=2&type ...
- IP多媒体子系统(IP Multimedia Subsystem,IMS)
目录 1 什么是IP多媒体子系统[1] 2 IMS产生的背景[2] 3 IMS的特点分析[3] 4 IMS中的功能实体[3] 5 IMS中的接口和协议[3] 6 参考文献 [编辑] 什么是IP多媒 ...