私のクエリの目的は、ネストされたクエリを利用して、Aで始まる名前を持つ国の首長と、その国の首都の人口が10万人以上である場合に、その国の名前と首長を返すことです。
以下は私のクエリです。
SELECT country.name as country,
(SELECT country.headofstate
from country
where country.headofstate like 'A%')
from country, city
where city.population > 100000;
逆にしてみたり、Where句に置いてみたりしました。ネストされたクエリを取得できません。私は、"subquery returns more than one row"などのエラーが返ってくるだけなんです。もし誰かが、どのように順序付けるか、そしてなぜそれが特定の方法でなければならないかを説明して、私を助けてくれるなら、それは素晴らしいことです。
もし、入れ子にする必要があるなら、これは一つの方法でしょう。
SELECT o.name AS country, o.headofstate
FROM country o
WHERE o.headofstate like 'A%'
AND (
SELECT i.population
FROM city i
WHERE i.id = o.capital
) > 100000
JOIN` は相関サブクエリよりも効率的でしょうけど。そのタスクをあなたに与えた人は、スピードについていけないのでしょうか?
私が考えるに、ネストされたクエリの場所は WHERE 句だけで、例えば、次のようになります。
SELECT country.name, country.headofstate
FROM country
WHERE country.headofstate LIKE 'A%' AND
country.id in (SELECT country_id FROM city WHERE population > 100000)
それとは別に、私はAdrianと同意見です:なぜネストされたクエリを使用する必要があるのでしょうか?
以下のクエリは、必要なものを達成するのに役立ちます。
select scountry, headofstate from data
where data.scountry like 'a%'and ttlppl>=100000