概述
Merge into是Oracle语法, 判断表中有没有符合on()条件中的数据,满足条件则可以更新数据,不满足就插入数据。【注意on后面的条件一定要用()包起来】
用法一:Insert/Update
有一个表T(指a),有两个字段a、b,我们想在表T中做Insert/Update,如果条件满足,则更新T中b的值,否则在T中插入一条记录。
merge into 目标表 a
using 源表 b
on(a.条件字段1=b.条件字段1 and a.条件字段2=b.条件字段2 ……)
when matched then update set a.字段=b.字段 --目标表别称a和源表别称b都不要省略
when not matched then insert (a.字段1,a.字段2……)values(b.字段1,b.字段2……) --目标表别称a可省略,源表别称b不可省略
"在一个同时存在Insert和Update语法的Merge语句中,总共Insert/Update的记录数,就是Using语句中"源表"的记录数"。
用法二:Insert
merge into 目标表 a
using 源表 b
on(a.条件字段1=b.条件字段1 and a.条件字段2=b.条件字段2 ……)
when not matched then insert (a.字段1,a.字段2……)values(b.字段1,b.字段2……) --目标表别称a可省略,源表别称b不可省略
这里只有满足条件才执行插入操作,即不会插入重复记录到数据库。
源表b可能是一张表结构不同于a的表,有可能是一张构建相同表结构的临时表,也有可能是我们自己组起来的数据.
对于前两种很好理解。现在主要说一下组数据。
对于Oracle有dual这个系统表很好构建,如下
MERGE INTO T T1
USING
(
SELECT '1001' AS a, 2 AS b FROM dual
) T2
ON ( T1.a=T2.a)
WHEN MATCHED THEN
UPDATE SET T1.b= T2.b
WHEN NOT MATCHED THEN
INSERT (a,b) VALUES(T2.a,T2.b);
最后
以上就是温柔羽毛为你收集整理的Merge into用法的全部内容,希望文章能够帮你解决Merge into用法所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复