我有一个表定义为:
----------------------------------------
| a (VARCHAR) | b (DATE) | c (INT) |
----------------------------------------
索引定义为:
CREATE INDEX table_index ON table (a,b);
运行以下代码时:
INSERT INTO test_table
(a,b,c)
VALUES
('test', '2017-10-06 08:00:00', 1)
ON DUPLICATE KEY UPDATE
c = c + VALUES(c);
每次调用上述查询时,都会创建一个新行,而我希望在表上执行更新操作。即,如果 a 列和 b 列相同,我希望更新 c 列,否则创建一个新行。
为什么 ON DUPLICATE KEY 不起作用?
最佳答案
如果您将列 c 标记为主键或唯一键,您的查询将不会每次都插入新记录。
DUPLICATE KEY 查找重复的主键或唯一键,如果是,则它将更新相同的记录,否则创建新记录。
关于MySQL - 重复键不更新表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46700687/