ALLまたはNOT IN条件は、副問合せが返すすべての値と同じ方法で比較の左側のオペランドを比較する必要があることを示します。ALL条件は、式(または式のリスト)が、副問合せによって返されるすべての行と、比較演算子で指定したとおりの関係である場合にTRUEと評価されます。同様に、NOT IN条件は、式(または式のリスト)が副問合せによって返される値と一致しない場合にTRUEと評価されます。
RowValueConstructor
{CompOp
ALL| NOT IN} (Subquery
)
RowValueConstructor
の構文は、次のとおりです。
RowValueConstructorElement
| (RowValueConstuctorList
) |Subquery
RowValueConstructorList
の構文は、次のとおりです。
RowValueConstructorElement
[{,RowValueConstructorElement
} ... ]
RowValueConstructorElement
の構文は、次のとおりです。
Expression
| NULL
CompOp
の構文は、次のとおりです。
{= | <> | > | >= | < | <= }
パラメータ
構成要素 | 説明 |
---|---|
Expression |
式の構文の詳細は、「式の指定」を参照してください。ALL条件には、数値式も数値以外の式も使用できますが、両方の式の型には互換性がある必要があります。 |
= |
等しい |
<> | 異なる |
> | 大きい |
>= | 以上 |
< |
小さい |
<= |
以下 |
Subquery |
副問合せの構文については、「副問合せ」を参照してください。 |
説明
ALL条件では、0(ゼロ)行以上の行を返し、キーワードALLを使用して変更される比較演算子を使用します。互換性のある異なるデータ型の値をTimesTenで比較する方法については、「数値データ型」を参照してください。
RowValueConstructorList
が指定されている場合は、演算子=および<>のみを使用できます。
例
副問合せのあるNOT INの例です。
SELECT * FROM customers WHERE cid NOT IN (SELECT cust_id FROM returns) AND cid > 5000; SELECT * FROM customers WHERE cid NOT IN (SELECT cust_id FROM returns) AND cid NOT IN (SELECT cust_id FROM complaints); SELECT COUNT(*) From customers WHERE cid NOT IN (SELECT cust_id FROM returns) AND cid NOT IN (SELECT cust_id FROM complaints);
exclBookList
以外の本または価格が$20より高いすべての本を選択する例を示します。
SELECT * FROM books WHERE id NOT IN (SELECT id FROM exclBookList) OR books.price>20;
次の問合せは、job_history
表からemployee_id
およびjob_id
を返します。この例では、NOT IN条件に式のリストおよび副問合せを使用しています。
Command> SELECT employee_id, job_id FROM job_history WHERE (employee_id, job_id) NOT IN (SELECT employee_id, job_id FROM employees); < 101, AC_ACCOUNT > < 101, AC_MGR > < 102, IT_PROG > < 114, ST_CLERK > < 122, ST_CLERK > < 176, SA_MAN > < 200, AC_ACCOUNT > < 201, MK_REP > 8 rows found.