一尘不染

HERE X>所有选择最大值''与HERE X>选择最大值''。

sql

我遇到了多个查询,这些查询使用全数量子作为最大子查询:

之间有什么区别

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'


阅读 104

收藏
2021-05-23

共1个答案

一尘不染

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

应用于ALL单行将无效。

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

2021-05-23