【问题标题】:How Do I Count Users Per Group with MySQL?如何使用 MySQL 计算每个组的用户数?
【发布时间】:2011-12-05 20:11:19
【问题描述】:

我有一个组表:

  • id -- 唯一的 ID(主键)
  • group -- 组名

我有一个用户表:

  • 用户名 -- 唯一字符串(主键)
  • group_id -- group.id 的外键链接

在这种情况下,用户只会在一个组中。那么,在 MySQL 中,我如何列出组及其成员用户数?

我尝试使用子选择和计数,但它最终在所有组中显示相同的计数。

【问题讨论】:

    标签: mysql sql count group-by sql-subselect


    【解决方案1】:
    SELECT group.id,COUNT(users.username) FROM groups
    INNER JOIN users ON users.group_id=groups.id
    GROUP BY groups.id
    

    如果您想根据@Michael 的评论显示空组,您可以使用 LEFT JOIN 代替

    【讨论】:

    • +1,除非您可能希望 LEFT JOIN 占空组。
    • 并且别名 u 没有定义(或需要)
    • 我想这就是为了简单起见尝试更改编写查询的方式时会发生的情况;)
    【解决方案2】:
    select g.group, count(*) as group_count
    from groups g, users g
    where g.id=u.group_id
    group by g.groupname
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-09-08
      • 2020-04-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-07
      • 2012-05-11
      • 2019-04-23
      相关资源
      最近更新 更多