MySQL自关联business表查询:获取企业ID、名称及分支数量
实现语句
SELECT p.id AS 企业ID, p.businessname AS 企业名称, COUNT(c.id) AS 下属分支数量 FROM business p LEFT JOIN business c ON p.id = c.branch GROUP BY p.id, p.businessname ORDER BY p.id;
逻辑说明
- 我们将
business表分别作为父企业表(别名p)和子分支表(别名c)做左关联,关联条件为父企业ID等于子分支的branch字段,这样每个父企业都会匹配到所有直属下属分支,没有分支的父企业对应的子分支字段值为NULL - 按父企业的
id、businessname分组,确保每个企业对应唯一一条统计结果,同时兼容MySQL的严格分组模式 - 使用
COUNT(c.id)统计每个分组下的子分支数量,COUNT函数会自动忽略NULL值,因此没有分支的企业统计结果会直接返回0,不需要额外做空值转换 - 你之前写的子企业查询父企业的语句逻辑和当前需求相反,仅需要把左连接的左右表调换逻辑即可复用关联逻辑
内容的提问来源于stack exchange,提问作者BrainlessPOMO
相关产品推荐
相关产品推荐

