Sql:where子句中的相关子查询

时间:2017-02-28 04:48:26

标签: sql

我正试图从sqlzoo解决这个问题:

  

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

我确实通过使用join找到了答案。但下面是另一种选择:

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

通常,子查询将返回"区域"的列表。值>= all(subquery)表示"大于或等于列表的最大值",对所有大陆来说都是如此。

但是,最终结果会返回每个大陆的最大值

  1. 怎么会这样?
  2. and area>0在子查询中的作用是什么?

0 个答案:

没有答案