CREATE TABLE `t_duplicate` (
`a` int(11) NOT NULL,
`b` int(255) DEFAULT NULL,
`c` int(255) DEFAULT NULL,
PRIMARY KEY (`a`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=latin1 COMMENT='测试验证on duplicate key update 功能';

SELECT * FROM `t_duplicate`;

#添加和更新结果不一样,
#添加数据时,也就是当表中不存在唯一主键为a这条数据时,忽略on后面的内容,(此时是添加一条数据,不是update一条数据)
#当表中存在主键值1、4时,才会执行ON DUPLICATE KEY UPDATE 后面的语句把c更新成a+b的值, 否则不会执行ON后面的。(此时是更新一条数据,而不是添加一条数据)
#VALUES()函数只在INSERT...UPDATE语句中有意义,其它时候会返回NULL。
INSERT INTO t_duplicate(a,b,c) VALUES (1,2,7),(4,5,6) ON DUPLICATE KEY UPDATE c=VALUES(a)+VALUES(b);

INSERT INTO t_duplicate (a,b,c) VALUES (4,5,6) ON DUPLICATE KEY UPDATE c=8; #执行三次,影响的行数分别是:1,2,0

相关文章:

  • 2022-12-23
  • 2018-01-18
  • 2021-11-10
  • 2021-10-23
  • 2021-07-25
  • 2021-11-17
  • 2021-09-02
猜你喜欢
  • 2021-12-03
  • 2021-11-06
  • 2021-06-19
  • 2022-12-23
  • 2021-10-10
  • 2022-02-17
  • 2022-12-23
相关资源
相似解决方案