博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Oracle数据库merge into的使用,存在则更新,不存在则插入
阅读量:7126 次
发布时间:2019-06-28

本文共 3622 字,大约阅读时间需要 12 分钟。

1、在实际应用场景中,我们会用到:如果这条数据在表中,就更新数据;如果不存在这条数据,就插入这条数据。

在oracle中,可以使用merge into实现,在mysql中可以使用ON DUPLICATE KEY UPDATE,这里只介绍oracle中的merge into实现方法,sql语法如下:

merge into testtable t using dual on (t.id = '1')           when not matched then insert (id,a,b) values (1,2,1)               when matched then update set b = b+1;  select * from testtable;(如果testtable是空表,执行上述语句之后如下:) id    A    B--------------- 1     2    1select * from testtable;(如果再执行一次merge into,testtable结果)id    A    B---------------1     2    2

解释:

using dual on (...)是一种固定写法,也可以写成 using (select 1 from dual) on (...) , 表名dual也可以写成其他的名字。

on(...)里面是条件,可以写一个条件,也可以用and连多个条件。

2、顺便介绍一下mybatis中怎么使用merge into,直接上代码,代码使用的是动态sql。

merge into staff_evaluation t using dual on (t.login_id = #{loginId,jdbcType=VARCHAR}) when not matched then insert
USER_ID,
LOGIN_ID,
USER_NAME,
COMPLEX_SCORE,
MOBILE_SERVICE_SCORE,
BROADBAND_SCORE,
KEEP_SCORE,
STATE,
EVALUATE_TEXT,
BEGIN_TIME,
END_TIME,
EVALUATE_PERSON,
#{userId,jdbcType=VARCHAR},
#{loginId,jdbcType=VARCHAR},
#{userName,jdbcType=VARCHAR},
#{complexScore,jdbcType=VARCHAR},
#{mobileServiceScore,jdbcType=VARCHAR},
#{broadbandScore,jdbcType=VARCHAR},
#{keepScore,jdbcType=VARCHAR},
#{state,jdbcType=VARCHAR},
#{evaluateText,jdbcType=VARCHAR},
#{beginTime,jdbcType=VARCHAR},
#{endTime,jdbcType=VARCHAR},
#{evaluatePerson,jdbcType=VARCHAR},
when matched then update
t.COMPLEX_SCORE = #{complexScore,jdbcType=VARCHAR},
t.MOBILE_SERVICE_SCORE = #{mobileServiceScore,jdbcType=VARCHAR},
t.BROADBAND_SCORE = #{broadbandScore,jdbcType=VARCHAR},
t.KEEP_SCORE = #{keepScore,jdbcType=VARCHAR},
t.EVALUATE_TEXT = #{evaluateText,jdbcType=VARCHAR},
t.BEGIN_TIME = #{beginTime,jdbcType=VARCHAR},
t.END_TIME = #{endTime,jdbcType=VARCHAR},
t.EVALUATE_PERSON = #{evaluatePerson,jdbcType=VARCHAR},
where t.LOGIN_ID = #{loginId,jdbcType=VARCHAR}

注意:一定要用update标签。

转载地址:http://fmael.baihongyu.com/

你可能感兴趣的文章
VB.NET-QQ新闻弹窗样式图片制作工具
查看>>
iOS 7侧边栏菜单解决方案
查看>>
移动web开发框架研究
查看>>
Word 2013 发布51CTO博客
查看>>
byRef 与 byVal
查看>>
QTP对日前控件的处理
查看>>
ES6中的尾递归优化例子
查看>>
(寻求志同道合的兄弟)寻求eclipse插件开发能手
查看>>
斗地主算法的设计与实现(一)--项目介绍&如何定义和构造一张牌
查看>>
前端技术/前端冷知识集锦
查看>>
免费高清视频素材下载网站
查看>>
RGW Usage类解析
查看>>
mouseover、mouseout防止多次触发
查看>>
Linux命令行:rpm 命令参数使用详解
查看>>
expdp数据泵自动备份脚本
查看>>
菲波那切数列
查看>>
java 调用存储过程示例版
查看>>
linux之lvm管理及扩容
查看>>
eclipse 查找接口实现类快捷键
查看>>
awk(二)流程控制,数组
查看>>