我有这个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
,这是非常不正确的。
我做错了什么?
答案 0 :(得分:1)
在评论中归功于a_horse_with_no_name和vkp。如果他们最终发布了自己的答案,请随时投票删除此答案。
而不是count(*)
计算行,而不是count(p.Toilet_ID)
,它只计算p.Toilet_ID is not null
的行数。