1.  
  1. MERGE语句是Oracle9i新增的语法,用来合并UPDATEINSERT语句。
  2. 通过MERGE语句,根据一张表或子查询的连接条件对另外一张表进行查询,
  3. 连接条件匹配上的进行UPDATE,无法匹配的执行INSERT
  4. 这个语法仅需要一次全表扫描就完成了全部工作,执行效率要高于INSERTUPDATE
  5. */
  6. /*语法:
  7. MERGE [INTO [schema .] table [t_alias]
  8. USING [schema .] { table | view | subquery } [t_alias]
  9. ON ( condition )
  10. WHEN MATCHED THEN merge_update_clause
  11. WHEN NOT MATCHED THEN merge_insert_clause;
  12. */
  13.  
  14. 复制代码
  15. merge into users
  16. using doctor
  17. on (users.user_id = doctor.doctorid)
  18. when matched then
  19. update set users.user_name = doctor.doctorname
  20. when not matched then
  21. insert
  22. values
  23. (doctor.doctorid,
  24. doctor.doctorid,
  25. '8736F1C243E3B14941A59FF736E1B5A8',
  26. doctor.doctorname,
  27. sysdate,
  28. 'T',
  29. ' ',
  30. doctor.deptid,
  31. 'b319dac7-2c5c-496a-bc36-7f3e1cc066b8');
  32. 复制代码
  1. when matched then 是对如果可以匹配的进行操作
  1. when not matched then 是对不能匹配的进行操作;如果有需要可以单独进行新增和修改。
  1. 如下:单独进行修改和新增

这是table1和table2的原始数据

  1. merge into TABLE1 t1
  2. USING TABLE2 T2--(table2 可以换成一个select的子语句 "using (select * from tbaletemo) t2")
  3. ON (t1.dd1 = t2.aa1)
  4. when matched then-- 只是修改
  5. update set t1.dd2 = t2.aa2, t1.dd3 = t2.aa3;
  6. commit;

  以上脚本是修改table1如果能在table2中可以找到相应的数据(T1.DD1=T2.AA1这是对应的条件)

执行完后的数据是

  1. merge into TABLE1 t1
  2. USING TABLE2 T2
  3. ON (t1.dd1 = t2.aa1)
  4. --when matched then
  5. --update set t1.dd2 = t2.aa2, t1.dd3 = t2.aa3
  6. WHEN NOT MATCHED THEN
  7. insert(t1.dd1,t1.dd2)values(t2.aa1,t2.aa2); --只是新增

  

  1.  
  1.  

oracle 对对表匹配的进行修改匹配不上的可以进行新增 (MERGE INTO)的更多相关文章

  1. C#,如何程序使用正则表达式如何使用匹配的位置的结果修改匹配到的值

    程序代码使用正则表达式如何修改匹配到的值: 代码一: using System; using System.Text.RegularExpressions; public class Example ...

  2. 所生成项目的处理器架构“MSIL”与引用“***”的处理器架构“x86”不匹配。这种不匹配可能会导致运行时失败。请考虑通过配置管理器...

    警告:所生成项目的处理器架构“MSIL”与引用“***”的处理器架构“x86”不匹配.这种不匹配可能会导致运行时失败.请考虑通过配置管理器更改您的项目的目标处理器架构,以使您的项目与引用间的处理器架构 ...

  3. [No0000100]正则表达式匹配解析过程分析(正则表达式匹配原理)&regexbuddy使用&正则优化

    常见正则表达式引擎引擎决定了正则表达式匹配方法及内部搜索过程,了解它至关重要的.目前主要流行引擎有:DFA,NFA两种引擎. 引擎 区别点 DFA Deterministic finite autom ...

  4. 由MQTT topic的正则表达式匹配引发的特殊字符"/"匹配思考

    正则表达式中的'/'替换 近期项目对接OneNET的MQTT物联网套件,需要完成命令下发流程. 流程要求: (1)设备在接收平台下发的命令(topic为$sys/{pid}/{device-name} ...

  5. VIM 用正则表达式,非贪婪匹配,匹配竖杠,竖线, 匹配中文,中文正则,倒数第二列, 匹配任意一个字符 :

    VIM 用正则表达式 批量替换文本,多行删除,复制,移动 在VIM中 用正则表达式 批量替换文本,多行删除,复制,移动 :n1,n2 m n3     移动n1-n2行(包括n1,n2)到n3行之下: ...

  6. Oracle XE http端口8080的修改

    Oracle Express Edition(XE)默认的http端口是8080,这跟JBoss/Tomcat的默认端口相同,导致Jboss启动冲突. 修改办法: 1. 以dba身份登录XE 2. 执 ...

  7. php正则贪婪匹配与非贪婪匹配一些例子

    http://www.111cn.net/phper/210/55600.htm 贪婪模式匹配的原则是: 在可匹配也可不匹配的情况下, 优先匹配,直到不能匹配成功的情况下,记录备选状态,并把匹配控制交 ...

  8. nginx匹配规则说明以及匹配的优先级

    location 匹配规则语法规则 location [=|~|~*|^~] /uri/ { … } 模式    含义location = /uri    = 表示精确匹配,只有完全匹配上才能生效lo ...

  9. 正则双重过滤 /// splitKey1 第一个正则式匹配 /// splitKey2 匹配结果中再次匹配进行替

    /// <summary> /// 正则双重过滤 /// splitKey1 第一个正则式匹配 /// splitKey2 匹配结果中再次匹配进行替换 /// </summary&g ...

随机推荐

  1. [hdu6183][Color it]

    题目链接 题目大意 有一个矩阵,总共有4种操作 0:清空这个矩阵 1 x y c:将\((x,y)(1 \leq x ,y\leq 10^6)\)这个点加上一种颜色c\((0\leq c \leq 5 ...

  2. WebAPI接口安全校验

    通过网上查看相关WebAPI接口验证的方法,整理了一下,直接上代码,功能不复杂,有问题留言, //--------------------------------------------------- ...

  3. Tomcat如何发布web项目

    tomcat/webapps目录是用来存放Java项目的.每一个文件夹都是一个项目,默认这个目录下已经有了四个项目,都是tomcat自带的. 其中ROOT就是我们测试Tomcat时访问的Tomcat的 ...

  4. 好用的漂浮广告 jquery

    <script src="http://cdn.bootcss.com/jquery/1.11.2/jquery.js" type="text/javascript ...

  5. 计算机基础:计算机网络-chapter3

    数据链路层,给两个相邻节点传输数据. 数据链路:物理链路+通信协议. 数据链路层使用的信道主要有点对点信道和广播信道两种. 一.点对点信道的PPP协议: 用三层模型来研究数据链路层,不管在哪一链路上的 ...

  6. MySQL的主从分离基本配置

    1.介绍 MySQL数据库设置读写分离,可以使对数据库的写操作和读操作在不同服务器上执行,提高并发量和响应速度.现在的网站一般大点的,都采用有数据库主从分离.读写分离,既起到备份作用也可以减轻数据库的 ...

  7. 字符类型char、字符串与字符数组、字符数组与数据数组区别

    字符类型是以ASCII码值运算的:小写字母比相应的大写字母大32,其中A=65,a=97 Esc键 27(十进制).'\x1B'(十六进制).'\33'(八进制) 转义字符:\0 空字符     AS ...

  8. 100.Same Tree(E)

    100. same tree 100. Same Tree Given two binary trees, write a function to check if they are the same ...

  9. ttribute "xmlns" was already specified for element "web-app".

    今天导入了,一个javaweb项目,当自己对项目进行重命名的时候时候,但是web.xml直接爆出来一个"ttribute "xmlns" was already spec ...

  10. Java基础之随机生成数字和字母

    字母与数字的ASCII码 目 前计算机中用得最广泛的 字符集及其编码,是由美国国家标准局(ANSI)制定的ASCII码(American Standard Code for Information I ...