我是靠谱客的博主 温柔羽毛,最近开发中收集的这篇文章主要介绍Merge into用法,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

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用法所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(53)

评论列表共有 0 条评论

立即
投稿
返回
顶部