我想在一个与用户名和状态相对应的表中数行。状态可以是1,2或3。
| ID | username | status |
--------------------------
| 1 | john | 1 |
| 2 | john | 2 |
| 3 | john | 3 |
| 4 | john | 4 |
| 5 | jenna | 2 |
--------------------------
用户John有4个条目,但最后一个条目的状态为4,所以我不需要计算它。
所以我做了这个查询
SELECT count(*) FROM orders WHERE username = 'john' AND status = 1 OR 2 OR 3
但是,即使查询中有带有用户名和状态的记录,这也会对每一行进行计数。
发布于 2016-08-23 19:37:38
尝尝这个
SELECT count(*) FROM orders WHERE username = 'john' AND status IN ( 1,2, 3)
发布于 2016-08-23 19:38:03
您需要将该字段添加到每个比较中,并确保对条件进行正确分组:
SELECT count(*)
FROM orders
WHERE username = 'john'
AND (status = 1 OR status = 2 OR status = 3)
较短的语法:
SELECT count(*)
FROM orders
WHERE username = 'john'
AND status in (1,2,3)
发布于 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)
https://stackoverflow.com/questions/39109310
复制相似问题