我有一个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子句导致查询“重置”了值。例如,此查询将正确地增加播放时列:
INSERT INTO `playTime` (`username`, `playtime`, `deathtime`)
VALUES ('Rogue', 1, 1)
ON DUPLICATE KEY UPDATE `playtime`=`playtime`+1如果将“播放时间”替换为“死亡时间”,则会正确地增加另一列。为什么会这样呢?
发布于 2013-07-24 17:48:51
在这里使用逗号分隔语句。
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-24 17:48:49
试试这个..。逗号,而不是和
INSERT INTO `playTime` (`username`, `playtime`, `deathtime`)
VALUES ('Rogue', 1, 1)
ON DUPLICATE KEY UPDATE `playtime`=`playtime`+1 ,
`deathtime`=`deathtime`+1https://stackoverflow.com/questions/17841226
复制相似问题