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

猜你喜欢

转载自www.cnblogs.com/grasp/p/10136015.html
今日推荐