Mysql 分组,并具有;“未知列”;

Mysql 分组,并具有;“未知列”;,mysql,sql,Mysql,Sql,我有一张这样的桌子: ----------------------------------------- id | user_id | done | created_at ----------------------------------------- 1 | 5 | 0 | 2017-12-23 23:28:00 1 | 2 | 1 | 2017-12-23 23:28:00 1 | 5 | 1 | 2017-12-23 23:28

我有一张这样的桌子:

-----------------------------------------
id | user_id | done | created_at
-----------------------------------------
1  | 5       |  0   | 2017-12-23 23:28:00
1  | 2       |  1   | 2017-12-23 23:28:00
1  | 5       |  1   | 2017-12-23 23:28:00
1  | 10      |  0   | 2017-12-23 23:28:00
1  | 7       |  0   | 2017-12-23 23:28:00
1  | 5       |  1   | 2017-12-23 23:28:00    
我想要得到的是至少有一个
done
为0的用户计数(注意,user\u id列值可以重复多次)

我试过这个:

选择count(*)作为用户组中按用户id have done=0计算的总和

但它在having子句中表示未知列done


如何使用MySQL获取正确的数据?

要获取至少有一个done=0的用户,可以使用以下命令

select count(*) as sum 
from users 
group by user_id 
having sum(done=0) > 0

要获取至少有一条记录的所有用户的计数,其中done=0

select count(distinct user_id) 
from users
where done=0;
试试这个

使用
where
而不是
have

select count(*) as sum from users where done=0 group by user_id 

您应该使用
where
而不是
have
,因为have是用于聚合函数条件的。我编辑了一个问题,“user\u id”值可以在每个表中重复多次,如上所示返回两行,每行的值不同,两行都不正确:(哪个输出返回两行,每个行的值不同,但都不正确:(@HorusCoding在您的问题中包括您的预期数据,它应该与您的示例数据相关,对于上面的查询,它将为您提供至少有一条记录为done=0的用户的计数参见此处的演示。)