Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 编写一个查询,当首都城市是该国家列出的所有城市中最大的城市时,显示城市及其国家的名称_Mysql_Sql_Database_Relational Database - Fatal编程技术网

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
姓名
国家人口
首都

  • countryCode
    in
    city
    table=
    code
    in
    country
    table
  • ID
    in
    city
    table=
    capital
    in
    country
    table
编写一个查询,当首都城市是该国家列出的所有城市中最大的城市时,显示城市及其国家的名称

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

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;