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 | 副問合せの構文については、「副問合せ」を参照してください。 |
副問合せのある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.