将mysql子查询转换为Join

将mysql子查询转换为Join,mysql,join,subquery,Mysql,Join,Subquery,我是mysql新手&刚刚开始学习。昨天晚上,我试图将世界数据库国家表上的以下子查询重新形成一个联接 SELECT continent, NAME, population FROM country c WHERE population = (SELECT MAX(population) FROM country c2 WHERE c.continent=c2.continent AND population > 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
请帮助,我如何才能得到与上面的子查询相同的结果


提前感谢

您应该在子查询中通过
按洲分组
获得
最大(人口)
,然后
将其与表本身连接起来;像这样:

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;