mybatis ON DUPLICATE KEY UPDATE ステートメントが oracle ステートメントに変換されました

重複キー更新とは、挿入されたデータに同じ一意の主キーが存在する場合、存在する場合は更新され、存在しない場合は挿入されることを意味し、mysql データベースに適しており、oracle データベースで使用されます。 。

MERGE INTO ..... using ...on ...when matched then ... when not matched then
例は次のとおりです。

mysql:

テーブルに挿入 (PID、SPWID、BTCD、SV、BXCD、BSW、BW、DSW、SC、NT、MODITIME) 値
< 
foreach collection="list" item="bt" Index="index" separator=","> 
    ( #{bt.pid},#{bt.spwid},#{bt.btcd},#{bt.sv},#{bt.bxcd},#{bt.bsw},#{bt.bw}, #{bt.dsw},#{bt.sc},#{bt.nt},#{bt.moditime} ) 
</foreach> ON DUPLICATE KEY UPDATE 
    pid = value(pid), 
    spwid = value(spwid), 
    btcd = 値(btcd)、
    sv = 値(sv)、
    bxcd = 値(bxcd)、
    bsw = 値(bsw)、
    bw = 値(bw)、
    dsw = 値(dsw)、
    sc = 値(sc)、
    nt = 値(nt)、
    モディタイム = 値(モディタイム)

オラクルに対応:

MERGE INTOテーブル t2 
USING( 
<foreach collection="list" item="bt" Index="index" separator="union all"> 
    SELECT 
    #{bt.pid,jdbcType=VARCHAR} PID, 
    #{bt.spwid,jdbcType =VARCHAR} SPWID、
    #{bt.btcd,jdbcType=VARCHAR} BTCD、
    #{bt.sv,jdbcType=DOUBLE} SV、
    #{bt.bxcd,jdbcType=VARCHAR} BXCD、
    #{bt.bsw、jdbcType=DOUBLE BSW、
    #{bt.bw,jdbcType=DOUBLE} BW、
    #{bt.dsw,jdbcType=DOUBLE} DSW、
    #{bt.sc,jdbcType=DOUBLE} SC、
    #{bt.nt,jdbcType=VARCHAR} NT , 
    #{bt.moditime,jdbcType=DATE} MODITIME
    から DUAL 
</foreach> 
)t1 
ON (t2.PID = t1.PID)一致したとき

更新設定
t2.SPWID=t1.SPWID、
t2.BTCD=t1.BTCD、
t2.SV=t1.SV、
t2.BXCD=t1.BXCD、
t2.BSW=t1.BSW、
t2.BW=t1.BW、
t2.DSW=t1.DSW、
t2.SC=t1.SC、
t2.NT=t1.NT、
t2.MODITIME=t1.MODITIME一致しない場合は
挿入 (PID、SPWID、BTCD、SV、BXCD、BSW、BW) ,DSW,SC,NT,MODITIME) 値
(t1.PID,t1.SPWID,t1.BTCD,t1.SV,t1.BXCD,t1.BSW,t1.BW,t1.DSW,t1.SC,t1.NT ,t1.MODITIME)

おすすめ

転載: blog.csdn.net/luwei_cool/article/details/117470998