我目前有这个查询
SELECT COUNT(*)
FROM `applications`
WHERE approved =0
GROUP BY user_id
ORDER BY `applications`.`user_id` ASC
其中(在我的情况下)返回两行,如下所示
COUNT(*)
1
1
但是计数并没有计算整个查询,一次只计算一行。我如何得到这个理想的输出?
COUNT(*)
2
修改
分组的原因是,具有多个应用程序的用户仅计为1.例如
约翰有4个申请 Tracy有1个申请 弗雷德有2个申请返回的总数为3。
答案 0 :(得分:1)
如果你想要总行数,请删除“分组依据”和“顺序”(第一个是问题,第二个是不必要的,因为没有排序单行)。
SELECT COUNT(*)
FROM `applications`
WHERE approved =0
如果您想要user_ids的总数,请将“count(*)”切换为“count(distinct user_id)”
现在获得2行的原因是因为GROUP BY子句打印每组计数。您可以看到,如果您将“user_id”添加到您的选择:
SELECT COUNT(*) , user_id
FROM `applications`
WHERE approved =0
GROUP BY user_id
ORDER BY `applications`.`user_id` ASC
将返回两行,如下所示
COUNT(*) , user_id
1 , user1
1 , user2
答案 1 :(得分:1)
这将返回2:
SELECT COUNT(DISTINCT user_id)
FROM applications
WHERE approved = 0
很难说这是你想要的还是DVK的答案是正确的,因为当每个用户有一个匹配的行时,它们都返回相同的答案。