構文
<operand> <comparison operator> ALL (<subquery>)
          ALL
          という語は比較演算子の後に指定するもので、``サブクエリが返すレコードの
          ALL(すべて)に対して比較が
          TRUE の場合 TRUE
          を返す'' ことを表します。
          次に例を示します。
        
SELECT s1 FROM t1 WHERE s1 > ALL (SELECT s1 FROM t2);
          テーブル t1 に {10}
          という値を含むレコードがあるとします。
          テーブル t2 に含まれている値が
          {-5,0,+5} の場合、この式は TRUE
          になります。なぜなら t2
          に含まれている値はすべて 10
          より小さいからです。 テーブル
          t2 に含まれている値が
          {12,6,NULL,-100} の場合、この式は
          FALSE になります。なぜなら
          t2 に、10 よりも大きい 12
          という値が 1 つ存在するからです。 テーブル
          t2 に含まれている値が {0,NULL,1}
          の場合、この式は UNKNOWN
          になります。
        
          最後に、テーブル t2
          が空の場合、結果は TRUE
          になります。 この場合、結果は
          UNKNOWN
          になると考えたくなりますが、実際には
          TRUE
          です。わかりにくいかもしれませんが、
        
SELECT * FROM t1 WHERE 1 > ALL (SELECT s1 FROM t2);
          上の例の場合、テーブル t2
          が空なら TRUE になりますが、
        
SELECT * FROM t1 WHERE 1 > (SELECT s1 FROM t2);
          上の例の場合、テーブル t2
          が空なら結果は UNKNOWN
          になります。
        
SELECT * FROM t1 WHERE 1 > ALL (SELECT MAX(s1) FROM t2);
          さらに、上の例の場合も、テーブル
          t2 が空なら結果は
          UNKNOWN になります。
          一般に、NULL
          値を持つテーブルと空のテーブルは、境目のケースです。サブクエリのコードを書くときには、この
          2
          つの可能性を常に念頭に置くようにしてください。
        
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.

