这个问题指的是世界'数据库中。
有两张桌子:' City'和国家'。城市包含人口和国家代码字段 - 例如:' IND'印度 - 每一行(城市名称)。国家/地区包含每行(国家/地区名称)的国家/地区代码和大陆字段。
我需要获得一个列表,其中显示每个国家中最大的城市,最大的城市是人口最多的城市。如何在MySQL中执行此操作?
答案 0 :(得分:2)
使用mysql(仅限)可以使用一个技巧:
select * from (
select * from
from country c
join city d on d.country_id = c.id
order by population desc
) x
group by 1 -- assumes id column of country table is column number 1
不是为每个组返回聚合,而是将此非标准分组(并非所有非聚合列分组)返回每个组的第一个行,因此,首先订购,您将获得每个国家最大的人口城市。
虽然“官方”不能保证有效,但在实践中它可以100%的时间工作。
答案 1 :(得分:1)
您可以尝试此查询:
SELECT country, city
FROM city AS c
WHERE population = (SELECT MAX(population) FROM city WHERE country=c.country);
请注意,原则上可能是一个国家中不止一个最大的城市,即两个或更多城市碰巧拥有相同的人口。