ORACLE中MERGE INTO的用法

ORACLE中MEGER INTO的用法

使用场景:
操作数据库时,数据存在则UPDATE,不存在则INSERT时使用,ORACLE数据库都提供了 MERGE 方法来处理这种需求。

MERGE 命令:
MERGE 命令使用一条语句从一个或者多个数据源中完成对表的更新和插入数据。

MERGE 语法:

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 MATCHED THEN [here you can execute some update sql or something else ] 
WHEN NOT MATCHED THEN [execute something else here ! ] 

Demo:

MERGE INTO  DEMO T
USING (SELECT '1' ID, 'wangyi' NAME FROM dual) P on (T.ID=P.ID)
WHEN MATCHED THEN UPDATE SET T.NAME=P.NAME
WHEN NOT MATCHED THEN  INSERT (T.ID, T.NAME) VALUES (P.ID, P.NAME ); 

若ID为1的数据存在则更新,不存在则插入

Warning:

Merge Into的原理是,从using 搜出来的结果逐条与on条件匹配,然后决定是update还是Insert。
当USING后面的sql没有查询到数据的时候,Merge Into语句是不会执行update和Insert操作的。 所以要想让Merge
Into正常运行,要保证USING 后面的SELECT有数据。

Interesting
当在批量Update执行效率很低时可用MEGER INTO UPDATE

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值