我有会员表
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
答案 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