on duplicate key update 重複插入時更新 使用
阿新 • • 發佈:2018-12-06
基本語法:
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標準語法!**