我遇到了多个查询,这些查询使用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'
答案 0 :(得分:4)
SELECT MAX
是一个聚合操作,因此,您的子查询将选择一行。
将ALL
应用于单行将无效。
如果子查询返回多行,则非ALL
版本将导致错误。另请注意,使用ALL
时,您可以从子查询中删除MAX
,并获得正确的结果(可能具有相同的性能特征)。