我有一个SQL查询,它使我有点挣扎。
SELECT c.Threat_Type, COUNT(*) FROM BORE.NormalToilet c
LEFT JOIN BORE.EnragedToilet p on p.Toilet_ID = c.Toilet_ID
GROUP BY c.Threat_Type这是输出:
+--------------+--------+
| Threat Type | Count |
+--------------+--------+
| Portable | 26 |
| Japanese | 1 |
| Toilet | 1 |
| Assassin | 3 |
+--------------+--------+下面是这个查询的问题:
0,而不是1。如果我尝试一个INNER JOIN,它不包括带有1的字段。这是正确的行为(因为没有匹配),但是,我希望它是0而不是1。使用LEFT JOIN时,它只表示1,这是非常不正确的。
我做错了什么?
发布于 2015-12-15 16:36:48
在评论中要归功于a_horse_with_no_name和vkp。如果他们最终发布了自己的答案,可以自由投票删除这个答案。
与计算行数的count(*)不同,您需要count(p.Toilet_ID),它只计算p.Toilet_ID is not null所在的行。
https://stackoverflow.com/questions/34293872
复制相似问题