我有两张父子关系表:
PARENT 表格,其中id
为索引
id | name
----------------
1 | Bob
2 | Mike
3 | Joe
CHILDREN 表格,其中id
为索引
id | parent | name
-------------------------
1 | 1 | Ronald
2 | 2 | Sammy
3 | 3 | Jenny
4 | 1 | Tara
5 | 3 | Jack
在我的网站上,我想显示所有父母的列表,其子女数量如下:
id | name | Children Count
-------------------------------
1 | Bob | 2
2 | Mike | 1
3 | Joe | 2
这样做的有效方法是什么?请注意,这里我代表了我的数据结构的类似简化版本,在我的实际情况中,我的PARENT
表中有大约10000条记录,每个parent
大约有10 - 200
children
如果您建议在count
表格中添加PARENT
列,您是否知道count
当{I}} MYSQL
会自动更新CHILDREN
时在{{1}}表中进行更改?
答案 0 :(得分:3)
SELECT p.id,
p.name,
COUNT(c.id) AS children_count
FROM parent p
LEFT JOIN children c ON p.id = c.parent
GROUP BY p.id
答案 1 :(得分:1)
似乎可以这样做
select p.id, p.name, c.cnt
from parent p
inner join (select parent, count(id) cnt
from children
group by parent) c on p.id = c.parent
答案 2 :(得分:0)
查询:
SELECT a.id, a.name, COUNT(b.name)
FROM parent a
INNER JOIN children b
ON a.id = b.parent
GROUP BY b.parent;