java oralce merge_Oracle数据库merge into的使用,存在则更新,不存在则插入
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標簽。
總結
以上是生活随笔為你收集整理的java oralce merge_Oracle数据库merge into的使用,存在则更新,不存在则插入的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C语言中期报告模板,学院毕业设计(论文)
- 下一篇: Java 批量插入数据到数据库(MySQ