1. 程式人生 > >mysql 插入更新判斷 ON DUPLICATE KEY UPDATE

mysql 插入更新判斷 ON DUPLICATE KEY UPDATE

平時我們在設計資料庫表的時候總會設計 unique 或者 給表加上 primary key 的限制條件.
此時 插入資料的時候 ,經常會有這樣的情況:
我們想向資料庫插入一條記錄:

  • 若資料表中存在以相同主鍵的記錄,我們就更新該條記錄。
  • 否則就插入一條新的記錄。

如果在INSERT語句末尾指定了ON DUPLICATE KEY UPDATE,並且插入行後會導致在一個UNIQUE索引或PRIMARY KEY中出現重複值,則在出現重複值的行執行UPDATE;如果不會導致唯一值列重複的問題,則插入新行。 
例如,如果列 a 為 主鍵 或 擁有UNIQUE索引,並且包含值1,則以下兩個語句具有相同的效果:

INSERT INTO test (a, b, c) VALUES ('1', 'b1', 'c1')  ON DUPLICATE KEY UPDATE b='b2', c='c2';  

UPDATE test SET b = 'b2', c = 'c2' WHERE a = '1'

 

主要方式 :

INSERT ... SELECT

INSERT ... ON DUPLICATE KEY UPDATE

INSERT ... ON DUPLICATE REPLACE