在同一个表上使用计数计算的mysql查询

时间:2015-07-03 00:21:15

标签: mysql phpmyadmin

我有会员表

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

我需要一个查询来显示成员列表,并从他们父母的最高人数排序,所以答案将是

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

1 个答案:

答案 0 :(得分: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