mybatis-oracle批量插入Merge into,存在更新,不存在新增

Merge是一个非常有用的功能,类似于Mysql里的insert into on duplicate key.

Oracle在9i引入了merge命令,
通过这个merge你能够在一个SQL语句中对一个表同时执行inserts和updates操作. 当然是update还是insert是依据于你的指定的条件判断的,Merge into可以实现用B表来更新A表数据,如果A表中没有,则把B表的数据插入A表. MERGE命令从一个或多个数据源中选择行来updating或inserting到一个或多个表

语法如下
MERGE INTO [要插入数据的表] [表别名]
USING ( [查询语句(字段名和要插入表的字段名匹配上)] )[查询结果作为表起个别名]
ON ([两个表关联的表达式] AND […]…)
WHEN MATHED THEN [update语句或其他操作语句]
WHEN NOT MATHED THEN [insert语句或其他操作语句 ]

MERGE INTO table_a t 
USING (
	SELECT1 别名1,2 别名2,3 别名3 FROM	DUAL 
	UNION ALL 
	SELECT1 别名1,2 别名2,3 别名3 FROM	DUAL  ) t1 
ON ( t.1 = t1.别名1 AND t.2= t1.别名2 ) 
	WHEN MATCHED THEN
UPDATE 
	SET t.1= t1.别名1,
	t.2 = t1.别名2,
	t.3 = t1.别名3
	WHEN NOT MATCHED THEN
	INSERT (1,2,3 )
VALUES
	(
	t1.别名1,
	t1.别名2,
	t1.别名3
	)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值