我是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
请帮助,如何获得与上述子查询相同的结果。
提前致谢
最佳答案
您应该在子查询中将MAX(population)
与GROUP BY continent
一起使用,然后将JOIN
与表本身一起使用。像这样:
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;
关于mysql - 将mysql子查询转换为Join,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18041388/