1. 程式人生 > >mysql中的insert ... on duplicate key update column=IF(條件,值1,值2 )

mysql中的insert ... on duplicate key update column=IF(條件,值1,值2 )

    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)

批量插入更新資料:

  1. insertinto
  2. ​   Shops(shopid, viewtotal)   
  3. values(1,123456),   
  4. (2, 234567),  
  5. (3, 345678)  
  6. on duplicate keyupdate
  7.   shopid = values(shopid),  
  8.   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欄位不做更新操作,還是原先的值。