Mysql如何在同一查询中使用SUM和COUNT

时间:2018-06-28 03:27:53

标签: php mysql sql

我在下面有一个查询,该查询应该从名为 users 的mysql表中获取所有“记录” 字段。记录字段的值必须大于0才能计数。并且只有找到3个或更多记录(其中记录> 0)时查询才会返回true

以下查询对我来说很有意义,但它返回以下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吗?过去,我同时使用它们没有问题。

任何帮助都将非常感谢

编辑---------------------

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

我只想返回上表中的 value 字段大于0的结果。但是,我也只想返回在表格中找到的值总数的结果。表(值> 0)等于或大于3。

1 个答案:

答案 0 :(得分:1)

您可以仅使用count函数进行计数,使用where限制数据,使用having函数来检查您是否拥有所需的记录数。

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

演示:http://sqlfiddle.com/#!9/29ed41e/1

使用上述查询,您的PHP将把结果作为第一个索引,或counted视您的获取方式而定。您无需循环进行提取,因为将仅返回1行。

大致:

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

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