0

我是 mysql 新手,刚刚开始学习它。昨晚我试图将世界数据库国家表上的子查询重新形成为一个连接。

SELECT continent, NAME, population FROM country c WHERE
population = (SELECT MAX(population) FROM country c2 
WHERE c.continent=c2.continent AND population > 0)

我尝试了以下查询和其他几个带有内部连接等的查询,但失败了。我通过以下查询得到结果,其中最大人口符合预期,但大陆和国家/地区名称不同。

SELECT c.continent, c2.name, MAX(c2.population) AS pop FROM country  c, country c2 
WHERE c.continent = c2.continent GROUP BY continent

请帮忙,我怎样才能得到与上面的子查询相同的结果。

提前致谢

4

1 回答 1

1

您应该在子查询中MAX(population)使用 with ,然后使用表本身;像这样:GROUP BY continentJOIN

SELECT c1.continent, c1.NAME, c1.population 
FROM country c1 
INNER JOIN
(
   SELECT continent, MAX(population) AS Maxp
   FROM country
   WHERE population > 0
   GROUP BY continent
) AS c2  ON c1.population = c2.maxp 
        AND c1.continent  = c2.continent;
于 2013-08-04T09:12:41.673 回答