我在下面有一个查询,该查询应该从名为 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。
答案 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,因此您不希望计算行数,而是想要实际的返回值。