sql - 用 mysql group by 返回计数 0

标签 sql mysql count group-by

像这样的数据库表

============================
= 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/

相关文章:

php - 结合两个 SQL 查询 PDO

sql - 在忽略重复项的同时计算子组的行

MYSQL 使用 where 子句连接排除匹配值

PHP/MySQL 表单未将数据发送到数据库

sql-server - SQL Server 左连接

mysql - 如何通过按小节计算*每个*组来找到家庭破坏者?

mysql - 尝试使用 ColdFusion MX 7 更新 mysql 表

SQL Server 数据透视查询替代或优化

python - PySpark:将 python 列表中的元素添加到 spark.sql() 语句中

php - 在 Get_Where 查询中匹配 JSON 字段(Code Igniter)