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 に答える