Mysql 编写一个查询,当首都城市是该国家列出的所有城市中最大的城市时,显示城市及其国家的名称
我有一个名为Mysql 编写一个查询,当首都城市是该国家列出的所有城市中最大的城市时,显示城市及其国家的名称,mysql,sql,database,relational-database,Mysql,Sql,Database,Relational Database,我有一个名为world的数据库。 该数据库有两个表:城市和国家 城市的列有:姓名,身份,人口,国家代码 country的列有:code,姓名,国家人口,首都 countryCodeincitytable=codeincountrytable IDincitytable=capitalincountrytable 编写一个查询,当首都城市是该国家列出的所有城市中最大的城市时,显示城市及其国家的名称 以下是显示最大城市列表的代码: SELECT MAX(c.Population) AS Popu
world
的数据库。
该数据库有两个表:城市
和国家
城市
的列有:姓名
,身份
,人口
,国家代码
country
的列有:code
,姓名
,国家人口
,首都
incountryCode
table=city
incode
tablecountry
inID
table=city
incapital
tablecountry
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
我的查询应该显示美国的所有城市,因为华盛顿特区是美国的首都,阿联酋的所有城市,因为迪拜是阿联酋的首都,但不应该显示巴西的城市,因为圣保罗不是巴西的首都。您可以使用此查询:
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
第二个左连接
允许获取该国首都的人口(c2.population
)
第三个左连接
可以获得该国最大城市的人口(t.max\u pop
)
我们只保留这两个数字相等的城市。您需要客户的姓名以及他们居住的城市的名称。城市名称存储在一个名为“cities”的单独表格中
你怎么知道这个城市是不是首都?你的意思是把那个国家的城市名单按人口排序?请适当地重新表述描述和标题。否。如果最大城市的国家资本列表更新您的问题,并显示一组适当的数据和预期结果,我需要获得该国的所有城市。该答案只给出了一行。之前的代码仅显示数据库中第一个国家的城市,即阿富汗
RIGHT
SELECT customers.name, cities.name
FROM customers
OUTER JOIN cities
ON cities.id=customers.city_id;