有人可以帮助解释这个子查询及其工作原理

时间:2016-05-03 21:24:47

标签: sql subquery

找到每个大洲最大的国家(按地区),显示大陆,名称和地区:

continent as Continent,
name as Name,
area as Area
FROM world x
WHERE area >= ALL(
    SELECT
    area
    FROM world y
    WHERE y.continent = x.continent
    AND area > 0
)

在这种情况下,我不明白为什么你必须做y.continent = x.continent。有人能解释一下这里发生了什么吗?初学者到SQL谢谢。

1 个答案:

答案 0 :(得分:1)

它被称为correlated subquery,并返回continent与“外部”查询中该特定记录的continent匹配的所有记录。

  

我不明白为什么你必须在这种情况下做y.continent = x.continent。

如果您没有,它将返回world中的所有记录,而不仅仅是continent匹配的记录。

查询大致转换为:

  

给我所有面积大于或等于同一大洲所有其他国家的国家