首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL查询将值设置为0 with 'AND‘子句

问MySQL查询将值设置为0 with 'AND‘子句
EN

Stack Overflow用户
提问于 2013-07-24 17:46:59
回答 2查看 92关注 0票数 1

我有一个MySQL查询,用于以1的增量更新两列,或者在不存在的情况下创建它们。

我的当前表有四列:id、username、playtime和deathtime。

目前,我使用的查询如下:

代码语言:javascript
复制
INSERT INTO `playTime` (`username`, `playtime`, `deathtime`)
VALUES ('Rogue', 1, 1)
ON DUPLICATE KEY UPDATE `playtime`=`playtime`+1
    AND `deathtime`=`deathtime`+1

(用户名在应用程序中是动态的,但示例中提供了一个用户名)。

但是,我的问题是,在一个重复的键上,它不会增加值,而是将两个值都设置为0。通过多次调整查询的测试,我发现是AND子句导致查询“重置”了值。例如,此查询将正确地增加播放时列:

代码语言:javascript
复制
INSERT INTO `playTime` (`username`, `playtime`, `deathtime`)
VALUES ('Rogue', 1, 1)
ON DUPLICATE KEY UPDATE `playtime`=`playtime`+1

如果将“播放时间”替换为“死亡时间”,则会正确地增加另一列。为什么会这样呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-07-24 17:48:51

在这里使用逗号分隔语句。

代码语言:javascript
复制
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

票数 4
EN

Stack Overflow用户

发布于 2013-07-24 17:48:49

试试这个..。逗号,而不是和

代码语言:javascript
复制
INSERT INTO `playTime` (`username`, `playtime`, `deathtime`)
VALUES ('Rogue', 1, 1)
ON DUPLICATE KEY UPDATE `playtime`=`playtime`+1 ,
     `deathtime`=`deathtime`+1
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17841226

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档