MySQL 中 Insert Or Update

708 阅读1分钟

使用 ON DUPLICATE KEY UPDATE

该语句是基于唯一索引或主键使用,比如一个字段 a 被加上了 unique index,并且表中已经存在了一条记录值为1

具体用法如下, 下面两个语句会有相同的效果

INSERT INTO table (a,b,c) VALUES (1,2,3)  
  ON DUPLICATE KEY UPDATE c=c+1;  
  
UPDATE table SET c=c+1 WHERE a=1;

需要注意的是,用 MyBatis 调用时,当数据不存在时执行 insert 时,返回值是 1,当数据存在时,执行update 操作时,返回值是2

@Insert("INSERT INTO t1 (a, b, c)  VALUES (1, 2, 3) ON DUPLICATE KEY UPDATE c = c + 1")
Integer insertOrUpdate();