资讯专栏INFORMATION COLUMN

Oracle数据库merge into的使用,存在则更新,不存在则插入

Taonce / 1283人阅读

摘要:在实际应用场景中,我们会用到如果这条数据在表中,就更新数据如果不存在这条数据,就插入这条数据。里面是条件,可以写一个条件,也可以用连多个条件。顺便介绍一下中怎么使用,直接上代码,代码使用的是动态。注意一定要用标签。

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,  
          
      
      
          
            #{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标签。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/71200.html

相关文章

发表评论

0条评论

Taonce

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<