作用:merge into 解决用B表跟新A表数据,如果A表中没有,则把B表的数据插入A表;
语法:
MERGE INTO [your table-name] [rename your table here]
USING ( [write your query here] )[rename your query-sql and using just like a table]
ON ([conditional expression here] AND [...]...)
WHEN MATHED THEN [here you can execute some update sql or something else ]
WHEN NOT MATHED THEN [execute something else here ! ]
-------------------------------------实例-----------------------------------------------------------------
merge into tfa_alarm_act_nms a
using (select FP0,FP1,FP2,FP3,REDEFINE_SEVERITY
from tfa_alarm_status) b
on (a.fp0=b.fp0 and a.fp1=b.fp1 and a.fp2=b.fp2 and a.fp3=b.fp3)
when matched then update set a.redefine_severity=b.redefine_severity
when not matched then insert (a.fp0,a.fp1,a.fp2,a.fp3,a.org_severity,a.redefine_severity,a.event_time
,a.int_id)
values (b.fp0,b.fp1,b.fp2,b.fp3,b.REDEFINE_SEVERITY,b.redefine_severity,sysdate,7777778);
作用:利用表 tfa_alarm_status跟新表tfa_alarm_act_nms 的b.redefine_severity,条件是a.fp0=b.fp0 and a.fp1=b.fp1 and a.fp2=b.fp2 and a.fp3=b.fp3,如果tfa_alarm_act_nms表中没有该条件的数据就插入。
如果你的数据量很大,此sql效率非常高。
自己做过的Demo
merge into masadw.tb_dw_ac_not_app_spt_old a
using (select t.user_id,t.acct_item_id,t.receivable_fee,t.acct_cycle_id
from masadw.tb_ac_acct_not_app_spt_old t) b
on(a.user_id=b.user_id and a.acct_item_id=b.acct_item_id)
when matched then update set
a.receivable_fee = b.receivable_fee
when not matched then insert
(
a.user_id,
a.acct_item_id,
a.receivable_fee,
a.acct_cycle_id
)
values
(
b.user_id,
b.acct_item_id,
b.receivable_fee,
b.acct_cycle_id
);
分享到:
相关推荐
关于Oracle中merge into的用法,比较实用哦
oracle merge 用法详解
oracle merge into的使用,开发必备的。
Oracle中merge into的使用 很有用的哦 学习一下
Mybatis批量foreach merge into的用法,这是介绍Mybatis批量foreach merge into的用法的文档
Merge into写法,含两种,带实例说明
主要介绍了oracle中merge into用法及实例解析,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
浅谈Oracle数据库中Merge Into的用法.pdf
主要介绍了oracle数据匹配merge into的实例详解的相关资料,希望通过本文能帮助到大家,需要的朋友可以参考下
在任何数据库中发生死锁都是不愉快的,即使是在一个特殊的情况下发生也是如此,它们会减小应用程序的接受程度(ACCEPTANCE),因此避免并正确解释死锁是非常重要的。
MERGE语句是Oracle9i新增的语法,用来合并UPDATE和INSERT语句。 通过MERGE语句,根据一张表或多表联合查询的连接条件对另外一张表进行查询,连接条件匹配上的进行UPDATE,无法匹配的执行INSERT。这个语法仅需要一次...
使用一条语句从一个或者多个数据源中完成对表的更新和插入数据,即某一表数据变化时另一个表数据也要发生变化,我们可以通过此语句来实现,旧数据更新,新数据则新增
如果不使用Oracle提供的merge语法的话,可能先要上数据库select查询一下看是否存在,然后决定怎么操作,这样的话需要写更多的代码,同时性能也不好,要来回数据库两次.使用merge的话则可以一条SQL语句完成. 1)主要功能 ...
文件差异比较工具Araxis+Merge+2001+Professional+Evaluation。
习惯使用的工具Araxis Merge 2001,Notepad++.5.4.5,FireFox,IP Messenger
非常经典的SQL经验,适合于数据库初学者及长期从事软件开发者