oracle 对对表匹配的进行修改匹配不上的可以进行新增 (MERGE INTO)
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)的更多相关文章
- C#,如何程序使用正则表达式如何使用匹配的位置的结果修改匹配到的值
程序代码使用正则表达式如何修改匹配到的值: 代码一: using System; using System.Text.RegularExpressions; public class Example ...
- 所生成项目的处理器架构“MSIL”与引用“***”的处理器架构“x86”不匹配。这种不匹配可能会导致运行时失败。请考虑通过配置管理器...
警告:所生成项目的处理器架构“MSIL”与引用“***”的处理器架构“x86”不匹配.这种不匹配可能会导致运行时失败.请考虑通过配置管理器更改您的项目的目标处理器架构,以使您的项目与引用间的处理器架构 ...
- [No0000100]正则表达式匹配解析过程分析(正则表达式匹配原理)&regexbuddy使用&正则优化
常见正则表达式引擎引擎决定了正则表达式匹配方法及内部搜索过程,了解它至关重要的.目前主要流行引擎有:DFA,NFA两种引擎. 引擎 区别点 DFA Deterministic finite autom ...
- 由MQTT topic的正则表达式匹配引发的特殊字符"/"匹配思考
正则表达式中的'/'替换 近期项目对接OneNET的MQTT物联网套件,需要完成命令下发流程. 流程要求: (1)设备在接收平台下发的命令(topic为$sys/{pid}/{device-name} ...
- VIM 用正则表达式,非贪婪匹配,匹配竖杠,竖线, 匹配中文,中文正则,倒数第二列, 匹配任意一个字符 :
VIM 用正则表达式 批量替换文本,多行删除,复制,移动 在VIM中 用正则表达式 批量替换文本,多行删除,复制,移动 :n1,n2 m n3 移动n1-n2行(包括n1,n2)到n3行之下: ...
- Oracle XE http端口8080的修改
Oracle Express Edition(XE)默认的http端口是8080,这跟JBoss/Tomcat的默认端口相同,导致Jboss启动冲突. 修改办法: 1. 以dba身份登录XE 2. 执 ...
- php正则贪婪匹配与非贪婪匹配一些例子
http://www.111cn.net/phper/210/55600.htm 贪婪模式匹配的原则是: 在可匹配也可不匹配的情况下, 优先匹配,直到不能匹配成功的情况下,记录备选状态,并把匹配控制交 ...
- nginx匹配规则说明以及匹配的优先级
location 匹配规则语法规则 location [=|~|~*|^~] /uri/ { … } 模式 含义location = /uri = 表示精确匹配,只有完全匹配上才能生效lo ...
- 正则双重过滤 /// splitKey1 第一个正则式匹配 /// splitKey2 匹配结果中再次匹配进行替
/// <summary> /// 正则双重过滤 /// splitKey1 第一个正则式匹配 /// splitKey2 匹配结果中再次匹配进行替换 /// </summary&g ...
随机推荐
- hdu 2609 How many(最小表示法)
Problem Description Give you n ( n < 10000) necklaces ,the length of necklace will not large than ...
- redux源码解析-redux的架构
redux很小的一个框架,是从flux演变过来的,尽管只有775行,但是它的功能很重要.react要应用于生成环境必须要用flux或者redux,redux是flux的进化产物,优于flux. 而且r ...
- Spring -- 自定义转换器
Spring 定义了 3 种类型的转换器接口,实现任意一个转换器接口都可以作为自定义转换器注册到 ConversionServiceFactoryBean 中: Converter<S,T> ...
- [luogu3377][左偏树(可并堆)]
题目链接 思路 左偏树的模板题,参考左偏树学习笔记 对于这道题我是用一个并查集维护出了哪些点是在同一棵树上,也可以直接log的往上跳寻找根节点 代码 #include<cstdio> #i ...
- SpringCloud第二弹(高可用Eureka+Ribbon负载均衡)
先建立父工程 .. ..一路next 搭建注册中心(需要建立三个工程,端口不一样) .. .. .. 修改入口类 package com.cloud.eurekaserver1111; import ...
- Shiro进行简单的身份验证(二)
一个Realm数据源: shiro.ini: [users] wp=123456 main方法执行认证: package com.wp.shiro; import org.apache.shiro.S ...
- BZOJ2815 拓扑排序 + LCA
https://www.lydsy.com/JudgeOnline/problem.php?id=2815 作为一个DAG图,结点之间又有这么明显的等级之分,很容易想到的是拓扑排序. 但是不管是正向的 ...
- java中long类型的比较
int类型最大存储10位,因此很多地方要用到long类型,它的存储位数是+-19位 范围:-9223372036854775808到9223372036854775807解释:long类型是64位的也 ...
- Git与GitHub学习笔记(七)Windows 配置Github ssh key
前言 SSH是建立在应用层和传输层基础上的安全协议,其目的是专为远程登录会话和其他网络服务提供安全性的保障,用过SSH远程登录的人都比较熟悉,可以认为SSH是一种安全的Shell.SSH登录是需要用户 ...
- 关于Ant脚本
在开发中,一个项目要经历单元测试l,集成测试,系统测试,测试过程中可能要不断修改代码,Ant脚本,通过一个xml文件,封装一系列繁琐又常用的操作,通过Ant指令执行xml脚本来批处理创建删除任务,编译 ...