MySQL计数问题

时间:2010-03-28 14:24:57

标签: mysql count

我有3个表用户(id,name),组(id,name)和users_groups(user_id,group_id)。用户和组具有多对多的关系,因此第三个用于存储用户和组的关系。我想从每组中具有用户数的组中选择所有数据。到目前为止,我想出了这个:

SELECT groups.*, COUNT(users_groups.user_id) AS user_count
FROM groups
LEFT JOIN users_groups ON users_groups.group_id = groups.id

问题是查询结果没有返回任何没有用户的组(users_groups没有任何包含这些组的group_id的记录)。


如果没有该用户的用户,我应该如何创建我的查询以选择所有组并且用户数是多少,还是用户数为0?

2 个答案:

答案 0 :(得分:2)

按照

的方式尝试
SELECT groups.*
     , sum( if (ISNULL(users_groups.user_id),0,1)) AS user_count
FROM groups
LEFT JOIN users_groups 
  ON users_groups.group_id = groups.id
GROUP BY groups.id

答案 1 :(得分:2)

您只需要添加GROUP BY子句:

SELECT groups.*, COUNT(users_groups.user_id) AS user_count
FROM groups
LEFT JOIN users_groups ON users_groups.group_id = groups.id
GROUP BY groups.id

对于没有相应users_groups记录的每个组,您将获得0的user_count。