"在哪里X> ALL SELECT MAX" vs" WHERE X> SELECT MAX"

时间:2014-11-24 00:57:51

标签: sql

我遇到了多个查询,这些查询使用all quantor作为最大子查询:

之间有什么区别吗?
SELECT name FROM bbc
 WHERE population > ALL
       (SELECT MAX(population)
          FROM bbc
         WHERE region = 'Europe')
   AND region = 'South Asia'

SELECT name FROM bbc
 WHERE population > 
       (SELECT MAX(population)
          FROM bbc
         WHERE region = 'Europe')
   AND region = 'South Asia'

1 个答案:

答案 0 :(得分:4)

SELECT MAX是一个聚合操作,因此,您的子查询将选择一行。

ALL应用于单行将无效。

如果子查询返回多行,则非ALL版本将导致错误。另请注意,使用ALL时,您可以从子查询中删除MAX,并获得正确的结果(可能具有相同的性能特征)。