也许我理解错了,你只想返回每个国家最大的城市吗?
如果是这样,您只需按国家/地区分组,而不是按国家和城市分组。您需要在GROUP BY
声明中包含标识国家/地区的属性以及该国家/地区的名称。您的查询最终将如下所示:
SELECT lab6.country.name AS cName, max(lab6.city.population) AS largest_pop
FROM lab6.country, lab6.city
WHERE lab6.country.country_code = lab6.city.country_code
GROUP BY lab6.country.country_code, lab6.country.name
如果您还想包含最大城市的名称,您首先需要决定如果有多个最大城市(有两个或多个城市的人口相同、最大的国家)该怎么做。我假设您可以将它们全部包含在内。在这种情况下,您可以简单地在 FROM 子句中执行子查询,加入具有相同人口的城市:
SELECT lc.cName, lab6.city.name, lc.largest_pop
FROM (
SELECT lab6.country.country_code AS cCode
lab6.country.name AS cName,
max(lab6.city.population) AS largest_pop
FROM lab6.country, lab6.city
WHERE lab6.country.country_code = lab6.city.country_code
GROUP BY lab6.country.country_code, lab6.country.name
) AS lc
JOIN lab6.city ON lc.cCode = lab6.city.country_code
WHERE lab6.city.population = lc.largest_pop