>>-+-expression1--+- = -------+---+-SOME-+---(fullselect1)------+-> | | (1) | +-ANY--+ | | +- <> ------+ '-ALL--' | | +- < -------+ | | +- > -------+ | | +- <= ------+ | | '- >= ------' | | .-,----------------. | | V | | '-(------expression2----+---)-- = --+-SOME-+---(fullselect2)-' '-ANY--' >--------------------------------------------------------------><
注:
比較述部 は、 1 つの値もしくは複数の値と、値の集合との間で比較を行います。
全選択は、 述部演算子の左側に指定されている式の数と同じ数の列を識別しなければなりません (SQLSTATE 428C4)。
全選択は、任意の行数を戻すことができます。
ALL を指定した場合、
SOME または ANY を指定した場合、
例: 以降の例を参照する場合、次の表を使用してください。
例 1
SELECT COLA FROM TBLAB WHERE COLA = ANY(SELECT COLX FROM TBLXY)
結果は 2、3 です。 副選択は (2,3) を戻します。 行 2 と 3 の COLA は、それらの値の少なくとも 1 つに等しくなっています。
例 2
SELECT COLA FROM TBLAB WHERE COLA > ANY(SELECT COLX FROM TBLXY)
結果は 3、4 です。 副選択は (2,3) を戻します。 行 3 と 4 の COLA は、それらの値の少なくとも 1 つより大きくなっています。
例 3
SELECT COLA FROM TBLAB WHERE COLA > ALL(SELECT COLX FROM TBLXY)
結果は 4 です。副選択は (2,3) を戻します。 それらの値の両方より大きいものは、行 4 の COLA しかありません。
例 4
SELECT COLA FROM TBLAB WHERE COLA > ALL(SELECT COLX FROM TBLXY WHERE COLX<0)
結果は 1、2、3、4、ヌル値です。 副選択は値を戻しません。 したがって、述部は TBLAB のすべての行に対して真です。
例 5
SELECT * FROM TBLAB WHERE (COLA,COLB+10) = SOME (SELECT COLX, COLY FROM TBLXY)
副選択は TBLXY からすべての項目を戻します。 述部は副選択に対して真であるため、結果は次のようになります。
COLA COLB ----------- ----------- 2 12 3 13
例 6
SELECT * FROM TBLAB WHERE (COLA,COLB) = ANY (SELECT COLX,COLY-10 FROM TBLXY)
副選択は TBLXY から COLX および COLY-10 を戻します。 述部は副選択に対して真であるため、結果は次のようになります。
COLA COLB ----------- ----------- 2 12 3 13