我是靠谱客的博主 鳗鱼自行车,最近开发中收集的这篇文章主要介绍oracle 批量添加数据当遇到条件字段相同时则更新本组信息业务需求一、merge into是什么?二、使用步骤总结,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 业务需求
  • 一、merge into是什么?
  • 二、使用步骤
    • 代码解释
  • 总结


业务需求

某表的表结构不动的情况下,接入少量数据并当遇相同字段值时更新本组信息,否则插入。


提示:以下是本篇文章正文内容,下面案例可供参考

一、merge into是什么?

MERGE关键字是一个神奇的DML关键字,它是Oracle9i新增的语法,它能将INSERT,UPDATE,DELETE等操作并为一句,根据与源表(可为实际表,也可为多组对象数据)联接的结果,对目标表执行插入、更新或删除操作。

二、使用步骤

代码如下(示例2.1):

merge into demo u using(
<foreach collection="list" item="item" index="index"
separator="union">
select #{item.id} as id,#{item.username} as username,#{item.age} as age from dual
</foreach>
)t
on (u.id=t.id and u.age=t.age)
when matched then
update set u.username=t.username
when not matched then
insert (u.id,u.username,u.age) values (t.id,t.username,t.age)

代码解释

解释如下:dual : 是oracle的虚拟表

using(
<foreach collection="list" item="item" index="index"
separator="union">
select #{item.id} as id,#{item.username} as username,#{item.age} as age from dual
</foreach>
)t
using()
--使用的数据源
demo
--表名称;
u
--表别名;
on (u.id=t.id and u.age=t.age) -- 判断条件 数据源t的某一行与数据库表u是否满足
when matched then
update set u.username=t.username
-- 满足条件则执行修改此数据、注意“ on内如果有条件了则修改时不
能修改条件字段”
when not matched then
insert (u.id,u.username,u.age) values (t.id,t.username,t.age)
-- 不满足则执行此插入语句
注意:
update 与 insert 后不能 加表名

总结

简单的说就是,判断表中有没有符合on ( ) 条件中的数据,有了就更新,没有就插入。其中on()判断的联合条件要唯一。

最后

以上就是鳗鱼自行车为你收集整理的oracle 批量添加数据当遇到条件字段相同时则更新本组信息业务需求一、merge into是什么?二、使用步骤总结的全部内容,希望文章能够帮你解决oracle 批量添加数据当遇到条件字段相同时则更新本组信息业务需求一、merge into是什么?二、使用步骤总结所遇到的程序开发问题。

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

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

评论列表共有 0 条评论

立即
投稿
返回
顶部