我有两张桌子:
town
存储290个城镇hospital
存储67个不同城镇的医院以下查询返回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子句来选择医院类型返回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行?
答案 0 :(得分:3)
在LEFT JOIN
时,将右侧表格条件放在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