mysql 在同一个 table 上进行计数计算的查询

mysql query with count calculation on the same table

我有会员table

id | parentid | name
1           1      a
2           1      x
3           1      c
4           2      d
5           3      e
6           3      f
7           4      g

我需要一个查询来显示成员列表,并从成员人数最多的 parent 到他们进行排序,因此答案将是

id | name  |rank
1      a     3
3      c     2
2      b     0
4      d     0
5      f     0
6      g     0
7      h     0

您可以使用内联视图计算 rank 值,并使用外部联接操作将其与详细信息行相匹配。

例如,像这样:

SELECT t.id
     , t.name
     , IFNULL(r.rank,0) AS `rank`
  FROM mytable t
  LEFT
  JOIN ( SELECT c.parentid
              , COUNT(1) AS `rank`
           FROM mytable c
          GROUP BY c.parentid
       ) r
    ON r.parentid = t.id
 ORDER BY `rank` DESC, t.id ASC