摘要:在實際應用場景中,我們會用到如果這條數據在表中,就更新數據如果不存在這條數據,就插入這條數據。里面是條件,可以寫一個條件,也可以用連多個條件。順便介紹一下中怎么使用,直接上代碼,代碼使用的是動態。注意一定要用標簽。
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標簽。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/71200.html
閱讀 3917·2021-09-09 09:33
閱讀 1773·2021-09-06 15:14
閱讀 1919·2019-08-30 15:44
閱讀 3076·2019-08-29 18:36
閱讀 3765·2019-08-29 16:22
閱讀 2095·2019-08-29 16:21
閱讀 2530·2019-08-29 15:42
閱讀 1648·2019-08-29 11:00