ALL/ NOT IN条件(副問合せ)

ALLまたはNOT IN条件は、副問合せが返すすべての値と同じ方法で比較の左側のオペランドを比較する必要があることを示します。ALL条件は、式(または式のリスト)が、副問合せによって返されるすべての行と、比較演算子で指定したとおりの関係である場合にTRUEと評価されます。同様に、NOT IN条件は、式(または式のリスト)が副問合せによって返される値と一致しない場合にTRUEと評価されます。

SQL構文

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.