0

我目前有这个查询

SELECT COUNT(*) 
    FROM  `applications` 
    WHERE approved =0
    GROUP BY user_id
    ORDER BY  `applications`.`user_id` ASC 

其中(在我的情况下)返回两行这样

COUNT(*)
1
1

但是计数并没有计算整个查询,一次只计算一行。我将如何获得所需的输出?

COUNT(*)
2

编辑

group by 的原因是让拥有多个应用程序的用户只计为 1。例如

John 有 4 个申请 Tracy 有 1 个申请 Fred 有 2 个申请

返回的总数为 3。

4

2 回答 2

1

如果您想要总行数,请删除“group by”和“order”(第一个是问题,第二个根本没有必要,因为没有排序单行)。

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
于 2013-07-25T17:28:30.423 回答
1

这将返回 2:

SELECT COUNT(DISTINCT user_id)
FROM applications
WHERE approved = 0

很难判断这是您想要的还是 DVK 的答案是正确的,因为当每个用户有 1 个匹配行时,它们都返回相同的答案。

于 2013-07-25T17:29:33.070 回答