关联表统计数量时无法显示数量为0的结果
解决父表全量行+子表关联数统计问题
嘿,问题出在你用的是默认的INNER JOIN(也就是你写的JOIN),它只会保留两张表中满足关联条件的行,所以没有子表数据的父表行自然就被过滤掉了。试试下面的修正版SQL:
SELECT t.id, t.name, COUNT(s.id) AS cnt FROM top AS t LEFT JOIN sub AS s ON t.id = s.top_id GROUP BY t.id, t.name ORDER BY t.id ASC
为什么这样能解决问题:
LEFT JOIN(左外连接)的核心就是保留左表的所有行,不管右表有没有匹配的关联数据。没有子表数据的父表行,对应的s.id会是NULL。COUNT(s.id)会自动忽略NULL值,所以这类行的统计结果会是0,正好符合你要统计每个父表行对应子表数据数量的需求。
内容的提问来源于stack exchange,提问作者Rummy
相关产品推荐
相关产品推荐

