2014-11-24 102 views
5

我碰到它使用所有quantor的最大子查詢的多個查詢傳來:「其中x> ALL SELECT MAX」 與 「WHERE X> SELECT MAX」

是否有任何區別

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' 

回答

4

SELECT MAX是一個聚合操作,因此,你的子查詢將選擇一行。

ALL應用於單行將不起作用。

如果您的子查詢返回多個行,則非ALL版本會導致錯誤。另請注意,使用ALL時,您可以從子查詢中刪除MAX,並且您會得到正確的結果(推測具有相同的性能特徵)。