mysql - 统计 child 数量的好方法?

标签 mysql database database-design

我有两个具有父子关系的表:

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

在我的网站上,我想显示所有 parent 的列表及其 child 的数量,如下所示:

    id  | name | Children Count
-------------------------------
    1   | Bob  |      2
    2   | Mike |      1
    3   | Joe  |      2

执行此操作的有效方法是什么?请注意,这里我代表了我的数据结构的一个类似的简化版本,在我的实际情况下,我的 PARENT 表中有大约 10000 条记录,每个 parent 有大约 10 - 200 child

如果您建议将 count 列添加到 PARENT 表,您是否知道有什么方法可以使 count 自动当我在 CHILDREN 表中进行更改时由 MYSQL 更新?

最佳答案

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

关于mysql - 统计 child 数量的好方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9093431/

相关文章:

mysql - InnoDB 表被制作为 MyISAM

mysql - 什么时候可以不使用 PRIMARY KEY?

mysql - MySQL中如何组织相互依赖的变量ID

php - MySQL 查询计算特定值的最大连续更新次数

php - 错误的分页链接重定向

mysql - Spotfire 连接到 mysql?

本地网络上的 MySQL 远程访问出现身份验证错误

sql - WHERE 和 HAVING 之间的语义区别是什么?

php - 如何在 MySQL 中批量插入具有两个唯一列的多行?

data-modeling - 你什么时候建模? (企业、应用程序和数据库设计建模)