Documentation Home
MySQL 5.6 リファレンスマニュアル
Download this Manual
PDF (US Ltr) - 26.8Mb
PDF (A4) - 26.9Mb
HTML Download (TGZ) - 7.1Mb
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
User comments in this section are, as the name implies, provided by MySQL users. The MySQL documentation team is not responsible for, nor do they endorse, any of the information provided here.
Sign Up Login You must be logged in to post a comment.