首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >MySQL选择有两个子句的地方,第二个可以是三个值

MySQL选择有两个子句的地方,第二个可以是三个值
EN

Stack Overflow用户
提问于 2016-08-23 19:32:10
回答 3查看 43关注 0票数 0

我想在一个与用户名和状态相对应的表中数行。状态可以是1,2或3。

代码语言:javascript
运行
复制
   | ID | username | status |
   --------------------------
   | 1  | john     |   1    |
   | 2  | john     |   2    |
   | 3  | john     |   3    |
   | 4  | john     |   4    |
   | 5  | jenna    |   2    |
   --------------------------

用户John有4个条目,但最后一个条目的状态为4,所以我不需要计算它。

所以我做了这个查询

代码语言:javascript
运行
复制
SELECT count(*) FROM orders WHERE username = 'john' AND status = 1 OR 2 OR 3

但是,即使查询中有带有用户名和状态的记录,这也会对每一行进行计数。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-08-23 19:37:38

尝尝这个

代码语言:javascript
运行
复制
 SELECT count(*) FROM orders WHERE username = 'john' AND status IN ( 1,2, 3)
票数 5
EN

Stack Overflow用户

发布于 2016-08-23 19:38:03

您需要将该字段添加到每个比较中,并确保对条件进行正确分组:

代码语言:javascript
运行
复制
SELECT count(*) 
FROM orders 
WHERE username = 'john' 
  AND (status = 1 OR status = 2 OR status = 3)

较短的语法:

代码语言:javascript
运行
复制
SELECT count(*) 
FROM orders 
WHERE username = 'john' 
  AND status in (1,2,3)
票数 4
EN

Stack Overflow用户

发布于 2016-08-23 19:39:12

当您编写类似于"1或2或3“的内容时,mysql将其视为表达式-- "1或2或3”只是计算为TRUE。

您可以扩展它- status = 1 OR status = 2 OR status = 3

也可以使用IN运算符:status IN (1, 2, 3)

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39109310

复制
相关文章

相似问题

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