1. 程式人生 > >on duplicate key update 重複插入時更新 使用

on duplicate key update 重複插入時更新 使用

基本語法:
INSERT INTO TABLE (a,c) VALUES (1,3) ON DUPLICATE KEY UPDATE c=c+1; (這裡a為主鍵)
這條sql相等於兩條sql:
1.INSERT INTO TABLE (a,c) VALUES (1,3)
2.UPDATE TABLE SET c=c+1 WHERE a=1;
如何a=1在表中存在則執行第2條語句,相等於對a=1這條資料進行更新否則執行第1條資料,相等於向表中新增一條新的資料。

在mybatis 配置檔案中使用on duplicate key update可以用sql引用
如:

<sql id="setTsourceInfo"
> a=#{a} <if test= "b != null and b != ''">,b=#{b}</if > </sql > <insert id="saveSource" parameterType="java.util.Map"> INSERT INTO table SET <include refid="setTsourceInfo" /> ON DUPLICATE KEY UPDATE <include refid="setTsourceInfo"
/> </insert>

效果是一樣的

**使用注意事項:
在使用on duplicate key update時 表必須要有唯一的標示(如主鍵,UNIQUE索引)
ON DUPLICATE KEY UPDATE只是MySQL的特有語法,並不是SQL標準語法!**