ALL/ NOT IN条件(副問合せ)
ALLまたはNOT IN条件は、副問合せが返すすべての値と同じ方法で比較の左側のオペランドを比較する必要があることを示します。ALL条件は、式(または式のリスト)が、副問合せによって返されるすべての行と、比較演算子で指定したとおりの関係である場合にTRUEと評価されます。同様に、NOT IN条件は、式(または式のリスト)が副問合せによって返される値と一致しない場合にTRUEと評価されます。
SQL構文
RowValueConstructor{CompOpALL | NOT IN} (Subquery)
RowValueConstructorの構文は、次のとおりです。
RowValueConstructorElement| (RowValueConstuctorList) |Subquery
RowValueConstructorListの構文は、次のとおりです。
RowValueConstructorElement[{,RowValueConstructorElement} ... ]
RowValueConstructorElementの構文は、次のとおりです。
Expression | NULL
CompOpの構文は、次のとおりです。
{= | <> | > | >= | < | <= }パラメータ
説明
-
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.