SQL进阶——ON DUPLICATE KEY UPDATE

ON DUPLICATE KEY UPDATE(mysql:有数据-修改、无数据-新增)

ON DUPLICATE KEY UPDATE的用法:(on duplicate key update)一般用来实现list的更新和新增。

如果有一个集合/数组需要根据某一个或者某几个字段组合的唯一索引判断是否存在,如果存在则更新对应的数据,如果不存在则新增

对应的数据如下所示:根据station_id和statistics_date的组合值判断是新增还是修改需要建立一个组合索引,且保证是唯一的!!!才会生效

image.png

<insert id="insertOrUpdateOmsEntryRejectoverloadAnalysisReport" parameterType="java.util.List">

    INSERT INTO oms_entry_rejectoverload_analysis_report(

    operation_unit_id,operation_unit_name,station_id,

    station_name,statistics_date,en_registration_total

    ) VALUES

<foreach collection="list" item="item" separator=",">

    (#{item.operationUnitId},#{item.operationUnitName},#{item.stationId},

    #{item.stationName},#{item.statisticsDate},#{item.enRegistrationTotal})

</foreach>

    ON DUPLICATE KEY UPDATE

    operation_unit_id = VALUES(operation_unit_id),

    operation_unit_name = VALUES(operation_unit_name),

    station_name = VALUES(station_name),

    en_registration_total = VALUES(en_registration_total),

</insert>

ON DUPLICATE KEY UPDATE后面跟需要更新的字段,一般唯一索引或者组合索引是不需要更新的,如上所示,station_id和statistics_date就不更新了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值