使用mysql group by返回0

ska*_*gor 9 mysql sql group-by count

像这样的数据库表

============================
= suburb_id   |   value
= 1           |    2
= 1           |    3
= 2           |    4
= 3           |    5
Run Code Online (Sandbox Code Playgroud)

查询是

SELECT COUNT(suburb_id) AS total, suburb_id 
  FROM suburbs 
 where suburb_id IN (1,2,3,4) 
GROUP BY suburb_id
Run Code Online (Sandbox Code Playgroud)

但是,当我运行此查询时,当suburb_id = 0时它不会给COUNT(suburb_id)= 0因为在郊区表中没有suburb_id 4,我希望这个查询为suburb_id = 4返回0,就像

============================
= total       |   suburb_id
= 2           |    1
= 1           |    2
= 1           |    3
= 0           |    4
Run Code Online (Sandbox Code Playgroud)

geo*_*tnz 11

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)
Run Code Online (Sandbox Code Playgroud)

(MSSQL,道歉)