mysql如何在同一查询中使用sum和count

e5njpo68  于 2021-06-24  发布在  Mysql
关注(0)|答案(2)|浏览(758)

我有下面的查询,它应该从一个名为users的mysql表中获取所有“record”字段。记录字段的值必须大于0才能计数。只有找到3条或更多记录时,查询才会返回true(其中记录>0)
下面的查询对我来说很有意义,但它返回以下php错误:操作数应包含2列

$query = "
SELECT * FROM users u
WHERE (

    SELECT COUNT(record) AS record,

    SUM(CASE WHEN record > 0 THEN 1 ELSE 0 END)

    FROM users

) >= 3

";

sum和count不能在同一个查询中使用吗?我过去同时使用过,没有问题。
任何帮助都很好谢谢
编辑

2ul0zpep

2ul0zpep1#

Table : users 
--------------
id       value
--------------
 1        1
 2        1
 3        1
 4        0
 5        0
 6        -1
 7        -10
 8        0

我只想在上表中的值字段大于0时返回结果。但我也只想返回一个结果,如果在表中找到的值的总数(其中值>0)是3或更多。

ztmd8pv5

ztmd8pv52#

你可以用 count 要计数的函数,a where 限制数据,以及 having 函数来检查您是否有所需的记录数。

select count(*) as counted 
from users 
where record > 0 
having counted > 3

演示:http://sqlfiddle.com/#!9月29日ED41E/1
通过上面的查询,php将把结果作为第一个索引,或者 counted 取决于你如何取货。您不需要循环获取,因为只返回1行。
大致:

$row = $query->fetch();
return $row['counted'];

行数将是1,因此您不希望计算行数,而是希望实际返回值。

相关问题