因此,这是任务:查找所有国家人口均≤25000000的大洲。然后查找与这些大洲相关的国家/地区的名称。显示名称,大洲和人口。
我的看法:
select continent, name, population
from world x
where name = all(select name from world y
where y.continent=x.continent
and population<2500000 and population>0)
这并没有给我带来理想的结果,只给了我两个来自欧亚大陆的国家。
答案 0 :(得分:1)
在这种情况下,您可以使用NOT EXISTS
:
select name, continent, population
from world t
where not exists (
select 1 from world
where continent = t.continent and population > 25000000
);
或与IN
运算符一起使用的子查询:
select name, continent, population
from world
where continent in (
select continent from world
group by continent
having max(population) <= 25000000
);
答案 1 :(得分:0)
使用子查询是否有要求?您的查询基本上等同于-
SELECT continent, name, population
FROM world x
WHERE population > 0
AND population < 2500000
答案 2 :(得分:0)
为什么不使用联接来合并两个表-而不是子查询?那可能也有帮助吗?另外,相对于其他表“ y”,我不太了解“世界x”,因此您可能需要稍微调整一下我的查询。希望这会有所帮助!
SELECT continent, name, population
from world x
JOIN y on y.continent = x.continent
WHERE population < 2500000 and population > 0;