比較述部
比較述部 は、 1 つの値もしくは複数の値と、値の集合との間で比較を行います。
全選択は、 述部演算子の左側に指定されている式の数と同じ数の列を識別しなければなりません (SQLSTATE 428C4)。 全選択は、任意の行数を戻すことができます。
ALL を指定した場合、
- 全選択が値をまったく戻さない場合、または指定したリレーションシップが、 全選択によって戻される値のすべてに対して「真」である場合、 述部の結果は「真」となります。
- 指定したリレーションシップが、全選択によって戻される値の少なくとも 1 つに対して「偽」である場合、 述部の結果は「偽」となります。
- 指定したリレーションシップが、全選択によって戻されるどの値に対しても「偽」でなく、 少なくとも 1 つの比較が NULL 値のために「不明」である場合、 述部の結果は「不明」となります。
SOME または ANY を指定した場合、
- 指定したリレーションシップが、全選択によって戻される少なくとも 1 つの行の各値に対して「真」である場合、 述部の結果は「真」になります。
- 全選択が行を戻さない場合、または指定したリレーションシップが、 全選択によって戻されるすべての行の少なくとも 1 つの値に対して「偽」である場合、 述部の結果は「偽」になります。
- 指定したリレーションシップがどの行に対しても「真」でなく、 少なくとも 1 つの比較が NULL 値のために「不明」である場合、 述部の結果は「不明」になります。
例: 以降の例を参照する場合、次の表を使用してください。
図 1. 比較述部の表の例

例 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、NULL 値です。副選択は値を戻しません。したがって、述部は 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
