像这样的数据库表
============================
= suburb_id | value
= 1 | 2
= 1 | 3
= 2 | 4
= 3 | 5
查询是
SELECT COUNT(suburb_id) AS total, suburb_id
FROM suburbs
where suburb_id IN (1,2,3,4)
GROUP BY suburb_id
但是,当我运行此查询时,当 suburb_id = 0 时,它不会给出 COUNT(suburb_id) = 0 因为在 suburbs 表中,没有 suburb_id 4,我希望此查询为 suburb_id = 4 返回 0,例如
============================
= total | suburb_id
= 2 | 1
= 1 | 2
= 1 | 3
= 0 | 4
最佳答案
GROUP BY 需要使用行,因此如果某个类别没有行,您将无法获得计数。将 where 子句视为在将源行组合在一起之前对其进行限制。 where 子句未提供要分组的类别列表。
您可以做的是编写一个查询来选择类别(郊区),然后在子查询中进行计数。 (我不确定MySQL对此的支持是什么样的)
类似于:
SELECT
s.suburb_id,
(select count(*) from suburb_data d where d.suburb_id = s.suburb_id) as total
FROM
suburb_table s
WHERE
s.suburb_id in (1,2,3,4)
(MSSQL,抱歉)
关于sql - 用 mysql group by 返回计数 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3597577/