摘要:在实际应用场景中,我们会用到如果这条数据在表中,就更新数据如果不存在这条数据,就插入这条数据。里面是条件,可以写一个条件,也可以用连多个条件。顺便介绍一下中怎么使用,直接上代码,代码使用的是动态。注意一定要用标签。
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 1 select * 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, when matched then update #{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}, where t.LOGIN_ID = #{loginId,jdbcType=VARCHAR} 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},
注意:一定要用update标签。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/71200.html
阅读 3916·2021-09-09 09:33
阅读 1773·2021-09-06 15:14
阅读 1918·2019-08-30 15:44
阅读 3070·2019-08-29 18:36
阅读 3764·2019-08-29 16:22
阅读 2094·2019-08-29 16:21
阅读 2529·2019-08-29 15:42
阅读 1644·2019-08-29 11:00