重複キー更新とは、挿入されたデータに同じ一意の主キーが存在する場合、存在する場合は更新され、存在しない場合は挿入されることを意味し、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)