当首都城市是该国家所列城市中最大的城市时,写一个显示城市及其国家名称的查询

时间:2016-10-09 18:54:35

标签: mysql sql database relational-database

我有一个名为world的数据库。 该数据库有两个表:citycountry

city的列包括:nameIDPopulationcountryCode

country的列包括:CodenamecountryPopulationCapital

    {li> countryCode位于city表中的Code table = country {li> ID位于city表中的capital table = country

撰写一个查询,显示首都所列出的所有城市中最大的城市及其所在国家/地区的名称。

以下是显示最大城市列表的代码:

SELECT MAX(c.Population) AS Population, c.Name AS City, cou.Name AS Country
FROM city c, country cou
WHERE c.CountryCode = cou.Code
GROUP BY cou.Name

假设我有以前代码中的信息:

Population    City             Country
1000000       Washington DC    USA
993943210     Sao Paulo        Brazil
1911919       Dubai            UAE

我的询问应该显示美国的所有城市,因为华盛顿特区是美国的首都和阿联酋的所有城市,因为迪拜是阿联酋的首都,但不应该在巴西显示城市,因为圣保罗不是巴西的首都。

2 个答案:

答案 0 :(得分:1)

您需要客户的姓名以及他们居住的城市的名称。城市名称存储在称为“城市”的单独表中。

RIGHT
SELECT customers.name, cities.name
FROM customers
OUTER JOIN cities
ON cities.id=customers.city_id;

答案 1 :(得分:0)

您可以使用此查询:

SELECT c.name AS city_name, cou.name AS country_name
FROM city c LEFT JOIN country cou ON c.countrycode = cou.code
            LEFT JOIN city c2 ON cou.capital = c2.id
            LEFT JOIN (SELECT countrycode, MAX(population) AS max_pop
                       FROM city
                       GROUP BY countrycode) t 
                         ON cou.code = t.countrycode
WHERE c2.population = t.max_pop

第二个LEFT JOIN允许获取该国家/地区的资本(c2.population)。

第三个LEFT JOIN允许获取该国最大城市(t.max_pop)的人口。

我们只保留这两个数字相等的城市。