mysql中的insert ... on duplicate key update column=IF(條件,值1,值2 )
阿新 • • 發佈:2019-01-26
mysql中的insert...on duplicate key update的用法注意點:
1.確定唯一性索引欄位(如機構表中,機構編碼是唯一的,不可重複的)
2.update 後面跟需要更新的欄位(只要唯一性欄位是重複了,則更新update後的欄位值)
3.如果想增加限制條件(不能使用where,可以使用IF(columnB>0,1,columnA))
完整的SQL示例:
INSERT INTO tbl (columnA,columnB,columnC) VALUES (1,2,3) ON DUPLICATE KEY UPDATE columnA=IF(columnB>0,1,columnA)
批量插入更新資料:
- insertinto
- Shops(shopid, viewtotal)
- values(1,123456),
- (2, 234567),
- (3, 345678)
- on duplicate keyupdate
- shopid = values(shopid),
- viewtotal = values(viewtotal)
insert into tbl(uniqueColumn,columnA,columnB,columnC) values(uniqueColumn,columnA,columnB,columnC)
on duplicate key update columnB = values(columnB ),
columnA = IF(columnB>0,1,columnA)
唯一性欄位:uniqueColumn
如果uniqueColumn重複則執行更新操作,否則新增。
假設重複執行更新操作,先將columnB更新為新值,然後根據if條件(columnB更新後的值)做判斷更新columnA。
columnC欄位不做更新操作,還是原先的值。