Documentation Home
MySQL 5.6 リファレンスマニュアル
Download this Manual
PDF (US Ltr) - 27.1Mb
PDF (A4) - 27.2Mb
HTML Download (TGZ) - 7.2Mb
HTML Download (Zip) - 7.2Mb


13.2.10.4 ALL を使用したサブクエリー

構文:

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) が含まれている場合、10t2 内の 3 つのすべての値より大きいため、この式は TRUE です。テーブル t2(12,6,NULL,-100) が含まれている場合、テーブル t2 には 10 より大きい単一値 12 が存在するため、この式は FALSE です。テーブル t2(0,NULL,1) が含まれている場合、この式は不明 (つまり、NULL) です。

最後に、テーブル t2 が空である場合、この式は TRUE です。そのため、テーブル t2 が空であるとき、次の式は TRUE です。

SELECT * FROM t1 WHERE 1 > ALL (SELECT s1 FROM t2);

ただし、テーブル t2 が空であるとき、次の式は NULL です。

SELECT * FROM t1 WHERE 1 > (SELECT s1 FROM t2);

さらに、テーブル t2 が空であるとき、次の式は NULL です。

SELECT * FROM t1 WHERE 1 > ALL (SELECT MAX(s1) FROM t2);

一般に、NULL 値を含むテーブル空のテーブルエッジケースです。サブクエリーを記述するときは、常に、これらの 2 つの可能性を考慮に入れたかどうかを考慮してください。

NOT IN<> ALL のエイリアスです。そのため、次の 2 つのステートメントは同じです。

SELECT s1 FROM t1 WHERE s1 <> ALL (SELECT s1 FROM t2);
SELECT s1 FROM t1 WHERE s1 NOT IN (SELECT s1 FROM t2);

User Comments
Sign Up Login You must be logged in to post a comment.