我试图理解使用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
我想对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
但是,我已经读过GROUP BY
将子句 ( )的最后一部分City.name
仅仅为了使它起作用是错误的。
那么这样做的正确方法是什么?我一直在尝试用谷歌搜索答案,但我觉得有些基本的东西我只是没有得到。