PostgreSQL:LEFT JOIN 不 return 整个左 table

PostgreSQL: LEFT JOIN does not return entire left table

我有 2 个表:

  1. town 存储了 290 个城镇
  2. hospital 存储了 67 个不同城镇的参考医院

以下查询 returns 290 行,这是 LEFT JOIN 应该执行的操作:

SELECT a.code, count(b.*) 
FROM town a 
   LEFT JOIN hospital b ON a.code = b.town_code 
GROUP BY a.code ;

现在,我在下面的查询中添加了一个 WHERE 子句到 select 一种类型的医院 returns 56 行:

SELECT
  a.code,
  count(b.*)
FROM town a 
  LEFT JOIN hospital b ON a.code = b.town_code
WHERE b.type = '01'
GROUP BY a.code ;

我不明白为什么,我想知道如何让我的 290 行也与第二个查询一起发出?

LEFT JOIN时,将右侧table的条件放在ON子句中以获得真正的LEFT JOIN行为。 (在 WHERE 子句中,您会得到常规的 INNER JOIN 结果。)

SELECT
  a.code,
  count(b.*)
FROM town a 
  LEFT JOIN hospital b ON a.code = b.town_code AND b.type = '01'
GROUP BY a.code