構文
<operand> <comparison operator> ANY (<subquery>) <operand> IN (<subquery>) <operand> <comparison operator> SOME (<subquery>)
ANY
という語は比較演算子の後に指定するもので、``サブクエリが返すレコードの
ANY
(いずれか)に対して比較が
TRUE
の場合 TRUE
を返す'' ことを表します。
次に例を示します。
SELECT s1 FROM t1 WHERE s1 > ANY (SELECT s1 FROM t2);
テーブル t1
に {10}
という値を含むレコードがあるとします。
テーブル t2
に含まれている値が
{21,14,7} の場合、この式は TRUE
になります。なぜなら t2
に、10
よりも小さい 7
という値が存在するからです。 テーブル
t2
に含まれている値が {20,10}
の場合や、テーブル t2
が空の場合、この式は FALSE
になります。 テーブル t2
に含まれている値が
{NULL
,NULL
,NULL
}
の場合、この式は UNKNOWN
になります。
IN
という語は = ANY
のエイリアスです。したがって、次の 2
つのステートメントは同じです。
SELECT s1 FROM t1 WHERE s1 = ANY (SELECT s1 FROM t2); SELECT s1 FROM t1 WHERE s1 IN (SELECT s1 FROM t2);
SOME
という語は ANY
のエイリアスです。したがって、次の 2
つのステートメントは同じです。
SELECT s1 FROM t1 WHERE s1 <> ANY (SELECT s1 FROM t2); SELECT s1 FROM t1 WHERE s1 <> SOME (SELECT s1 FROM t2);
SOME
はめったに使用されませんが、上の例では、この語がどのような場合に役立つかを示しています。``a
is not equal to any b''
という英語のフレーズを、ほとんどの人は ``a
と等しい b はまったく存在しない''
という意味に受け取ります。しかし、SQL
構文では意味が異なります。ANY
の代わりに <> SOME
を使用することによって、このクエリの本当の意味を誰もが確実に理解できるようにすることができます。
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.