MySQL选择其中有两个子句,第二个可以是三个值
我想在与用户名和状态对应的表中计算行数。状态可以是1、2或3MySQL选择其中有两个子句,第二个可以是三个值,mysql,count,Mysql,Count,我想在与用户名和状态对应的表中计算行数。状态可以是1、2或3 | ID | username | status | -------------------------- | 1 | john | 1 | | 2 | john | 2 | | 3 | john | 3 | | 4 | john | 4 | | 5 | jenna | 2 | ------
| 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
但是,即使查询中没有用户名和状态的记录,这也会对每一行进行计数。试试这个
SELECT count(*) FROM orders WHERE username = 'john' AND status IN ( 1,2, 3)
您需要将字段添加到每个比较中,并确保条件分组正确:
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)
当您编写类似“1、2或3”的内容时,mysql将其视为一个表达式——“1、2或3”的计算结果为TRUE 您可以展开它-
status=1或status=2或status=3
或者您可以使用中的
操作符:状态在(1、2、3)