mysql "ON DUPLICATE KEY UPDATE" 的使用

Posted _johnson

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql "ON DUPLICATE KEY UPDATE" 的使用相关的知识,希望对你有一定的参考价值。

ON DUPLICATE KEY UPDATE 语法并不是SQL的标准语法,如果在句尾指定该语法,它会根据指定的主键或者唯一标示索引来更新数据库的内容

具体的操作是想根据唯一标示查看数据库是否存在该记录,如果存在该记录就更新,如果不存在就会插入一条新的记录,

例子:

<insert id="batchCreatTickets" parameterType="java.util.List">
     insert into ticket 
     (id,ticket_id,price,stock,ticket_status,
     show_id)
     values
     <foreach collection="tickets" item="item" index="index"
            separator=",">
       (#{item.id},#{item.ticketId},#{item.price},#{item.stock},#{item.ticketStatus},
        #{item.showId})
    </foreach>
        ON DUPLICATE key update ticket_status=values(ticket_status),stock=values(stock),price=values(price)
  </insert>

使用ON DUPLICATE KEY UPDATE 时 如果想要更新数据,需要使用values(字段名)

以上是关于mysql "ON DUPLICATE KEY UPDATE" 的使用的主要内容,如果未能解决你的问题,请参考以下文章

深入mysql "ON DUPLICATE KEY UPDATE" 语法的分析

Hibernate 可以使用 MySQL 的“ON DUPLICATE KEY UPDATE”语法吗?

Java上的MySQL“INSERT ... ON DUPLICATE KEY UPDATE”:如何区分插入/更新/无变化状态

MySQL 通过“on duplicate key update”插入新记录时将旧值增加新值

MySQL“On 子句中的未知列”[重复]

MySQL INSERT ON DUPLICATE KEY UPDATE