表Person
包含id
列和parent_id
。
我需要一个包含id
列和children_count
列的表格。怎么做?为什么我不能写这样的东西? :
SELECT
id, count(parent_id) AS children_count
FROM
Person
GROUP BY
parent_id;
答案 0 :(得分:3)
您应该将表连接到自身以查找所有ID及其子项,然后计算计数。
select a.id parent,
count(b.id) count_child
from person a left outer join person b
on a.id = b.parent_id
group by a.id
order by a.id;
sqlfiddle的演示。
使用右外连接也可以实现相同的结果。
select b.id parent,
count(a.id) count_child
from person a right outer join person b
on a.parent_id = b.id
group by b.id
order by b.id;
答案 1 :(得分:0)
似乎查询的选择部分是问题所在。以下内容将为您提供每个parent_id的子项数
SELECT parent_id, count(id) AS children_count
FROM Person
GROUP BY parent_id