这是sqlzoo上的题,我想问一下第4行代码这么写是怎么回事在每一個州中找出最大面積的國家,列出洲份 continent, 國家名字 name 及面積 area。 (有些國家的記錄中,AREA是NULL,沒有填入資料的。)

SELECT continent, name, area FROM world x
WHERE area >= ALL
(SELECT area FROM world y
WHERE y.continent=x.continent
AND population>0)

这是关联子查询,它是用来限定同一个continent内的国家,而不是所有国家(包括其他continent的国家)

https://www.cnblogs.com/heenhui2016/p/10574695.html

(SELECT area FROM world y
WHERE y.continent=x.continent
AND population>0)
这是一个子查询,返回和主查询洲一样并且人口大于0的国家的面积
SELECT continent, name, area FROM world x
WHERE area >= ALL(子查询)
这个是主查询,返回的是面积比所有的子查询的面积都要大于等于的国的名字、洲和面积,因而就是这个洲面积最大的国家。