Sql:显示每个国家/地区的最大城市

时间:2014-10-12 22:10:26

标签: mysql sql relational-database

这个问题指的是世界'数据库中。

有两张桌子:' City'和国家'。城市包含人口和国家代码字段 - 例如:' IND'印度 - 每一行(城市名称)。国家/地区包含每行(国家/地区名称)的国家/地区代码和大陆字段。

我需要获得一个列表,其中显示每个国家中最大的城市,最大的城市是人口最多的城市。如何在MySQL中执行此操作?

2 个答案:

答案 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);

请注意,原则上可能是一个国家中不止一个最大的城市,即两个或更多城市碰巧拥有相同的人口。