1

我有一个 MySQL 查询,旨在以 1 为增量更新两列,或者如果它们不存在则创建它们。

我当前的表有四列:idusernameplaytimedeathtime

就目前而言,这是我使用的查询:

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

如果您将“游戏时间”与“死亡时间”交换,那么它会正确增加另一列。为什么是这样?

4

2 回答 2

4

试试这个.. 一个逗号,而不是 AND

INSERT INTO `playTime` (`username`, `playtime`, `deathtime`)
VALUES ('Rogue', 1, 1)
ON DUPLICATE KEY UPDATE `playtime`=`playtime`+1 ,
     `deathtime`=`deathtime`+1
于 2013-07-24T17:48:49.317 回答
4

在此处使用逗号分隔语句。

INSERT INTO `playTime` (`username`, `playtime`, `deathtime`)
VALUES ('Rogue', 1, 1)
ON DUPLICATE KEY UPDATE `playtime`=`playtime`+1, `deathtime`=`deathtime`+1

该示例可以在此处的文档中看到:http: //dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html

于 2013-07-24T17:48:51.990 回答