リファレンスガイド> SQL演算子のTDVサポート> 比較演算子> 定量化された比較
 
定量化された比較
比較演算子をALL、ANY、またはSOMEという単語と一緒に使用すると、比較は「定量化」されたものと呼ばれます。このような比較は、複数の行を返す可能性があるが単一の列を返すサブクエリに対して機能します。
構文
<expression> <comparison-operator> {ALL |ANY |SOME} <column-subquery>
備考
<comparison-operator>は、<、=、>、<=、>=、<>にすることができます。
ALLまたはANYは、サブクエリにのみ適用されます。それらの1つが使用されると、比較によってスカラーサブクエリが列サブクエリに変換されます。
サブクエリでの使用を除いて、ANYとSOMEは同等です。
ALLを使用する場合、サブクエリによって返されるすべての値について比較が真である必要があります。
ANYまたはSOMEを使用する場合、サブクエリの少なくとも1つの値について比較が真である必要があります。
ANYを使用するサブクエリは、単一の列を返す必要があります。 ANYは、単一の値をサブクエリによって生成されたデータ値の列と比較します。
いずれかの比較でTRUEの値が得られた場合、ANY比較はTRUEを返します。サブクエリがNULLを返す場合、ANY比較はFALSEを返します。
ALLは、単一の値をサブクエリによって生成されたデータ値と比較するために使用されます。指定された比較演算子は、指定された値を結果セットの各データ値と比較するために使用されます。すべての比較がTRUEの値を返す場合、ALLテストもTRUEを返します。
サブクエリが空の結果セットを返す場合、ALLテストはTRUEの値を返します。
結果セットのいずれかの値について比較テストがfalseの場合、ALL検索はFALSEを返します。
すべての値がtrueの場合、ALL検索はTRUEを返します。それ以外の場合は、UNKNOWNを返します。たとえば、サブクエリの結果セットにNULL値が含まれているが、NULL以外のすべての値に対して検索条件がTRUEである場合、ALLテストはUNKNOWNを返します。
ALL比較をネゲートすることは、他の演算子の組み合わせでALL比較を使用することと同じではありません。たとえば、NOT a = ALL(サブクエリ)は<> ALL(サブクエリ)と同等ではありません。
例(ANYを使用)
このクエリは、注文IDが500の製品が少なくとも1つ出荷された後に行われた注文の注文IDと顧客IDを返します。
SELECT ID, CustomerID
FROM SalesOrders
WHERE OrderDate > ANY (
SELECT ShipDate
FROM SalesOrderItems
WHERE ID=500);
例(SOMEを使用)
次の例のように、ANYの代わりにSOMEを使用できます。
SELECT ID, CustomerID
FROM SalesOrders
WHERE OrderDate > SOME (
SELECT ShipDate
FROM SalesOrderItems
WHERE ID=500);
例(ALLを使用)
メインクエリは、ID 500のすべての製品の出荷日に対して、各注文の注文日をテストします。注文日が注文ID 500のすべての出荷の出荷日よりも大きい場合、SalesOrdersテーブルのIDと顧客IDは次のようになります。結果セットに含まれます。
SELECT ID, CustomerID
FROM SalesOrders
WHERE OrderDate > ALL (
SELECT ShipDate
FROM SalesOrderItems
WHERE ID=500);