我有一个 MySQL 查询,旨在以 1 为增量更新两列,或者如果它们不存在则创建它们。
我当前的表有四列:id
、username
、playtime
和deathtime
。
就目前而言,这是我使用的查询:
INSERT INTO `playTime` (`username`, `playtime`, `deathtime`)
VALUES ('Rogue', 1, 1)
ON DUPLICATE KEY UPDATE `playtime`=`playtime`+1
AND `deathtime`=`deathtime`+1
(用户名在应用程序中是动态的,但为示例提供了一个)。
然而,我的问题是,在重复键上它不会增加值,而是将两个值都设置为 0。通过调整查询的大量测试,我发现是 AND 子句导致查询“重置”值。例如,此查询将正确增加 playtime 列:
INSERT INTO `playTime` (`username`, `playtime`, `deathtime`)
VALUES ('Rogue', 1, 1)
ON DUPLICATE KEY UPDATE `playtime`=`playtime`+1
如果您将“游戏时间”与“死亡时间”交换,那么它会正确增加另一列。为什么是这样?