【发布时间】:2010-06-20 16:42:16
【问题描述】:
我正在尝试了解使用 JOIN、COUNT(*) 和 GROUP BY 进行非常简单的查询的正确方法。我实际上已经让它工作了(见下文),但从我读到的内容来看,我使用了一个我不应该使用的额外 GROUP BY。
(注意:下面的问题不是我的实际问题(处理更复杂的表),但我试图提出一个类似的问题)
我有两张桌子:
Table: Person
-------------
key name cityKey
1 Alice 1
2 Bob 2
3 Charles 2
4 David 1
Table: City
-------------
key name
1 Albany
2 Berkeley
3 Chico
我想查询返回的 People(带有一些 WHERE 子句)
- 每个城市的匹配人数
- 城市的钥匙
- 城市名称。
如果我这样做
SELECT COUNT(Person.key) AS count, City.key AS cityKey, City.name AS cityName
FROM Person
LEFT JOIN City ON Person.cityKey = City.key
GROUP BY Person.cityKey, City.name
我得到了我想要的结果
count cityKey cityName
2 1 Albany
2 2 Berkeley
然而,我 read 认为,为了使其正常工作而将 GROUP BY 子句 (City.name) 的最后一部分加入是错误的。
那么正确的方法是什么?我一直在尝试用谷歌搜索答案,但我觉得有些基本的东西我没有得到。
【问题讨论】:
标签: sql count group-by left-join aggregate-functions