Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL选择其中有两个子句,第二个可以是三个值_Mysql_Count - Fatal编程技术网

MySQL选择其中有两个子句,第二个可以是三个值

MySQL选择其中有两个子句,第二个可以是三个值,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 | ------

我想在与用户名和状态对应的表中计算行数。状态可以是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
但是,即使查询中没有用户名和状态的记录,这也会对每一行进行计数。

试试这个

 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)