ANY条件は、比較演算子を使用して2つの式を比較します。最初の式が、副問合せによって返されるすべての行と、比較演算子で指定したとおりの関係である場合、条件はTRUEと評価されます。同様に、IN条件は、表の副問合せと式(または式のリスト)を比較します。式(または式のリスト)が副問合せによって返された値と等しい場合、IN条件はTRUEと評価されます。
RowValueConstructor {CompOp ANY| IN} (Subquery)
RowValueConstructorの構文は、次のとおりです。
RowValueConstructorElement |
(RowValueConstuctorList) |
Subquery
RowValueConstructorListの構文は、次のとおりです。
RowValueConstructorElement
[{, RowValueConstructorElement} ... ]
RowValueConstructorElementの構文は、次のとおりです。
Expression | NULL
CompOpの構文は、次のとおりです。
{= | <> | > | >= | < | <= }
構成要素 | 説明 |
Expression | 式の構文の詳細は、「式の指定」を参照してください。ANY条件には、数値式も数値以外の式も使用できますが、両方の式の型には互換性がある必要があります。 |
= | 等しい |
<> | 異なる |
> | 大きい |
>= | 以上 |
< | 小さい |
<= | 以下 |
Subquery | 副問合せの構文については、「副問合せ」を参照してください。 |
1件以上の未発送の発注を含む顧客リストを検索します。
SELECT customers.name FROM customers
WHERE customers.id = ANY
(SELECT orders.custid FROM orders
WHERE orders.status = 'un-shipped');
副問合せを含むIN条件の例です。1件以上の未発送の発注がある顧客をSELECT文で選択します。
SELECT customers.name FROM customers
WHERE customers.id IN
(SELECT orders.custid FROM orders
WHERE orders.status = 'un-shipped');
次に、IN条件に副問合せを指定する集計問合せを使用して、exclBookList
の本の最も高い価格を検索する例を示します。
SELECT MAX(price) FROM books WHERE id IN (SELECT id FROM exclBookList);
IN条件および副問合せに式のリストを使用した例を示します。
SELECT * from t1 where (x1,y1) in (SELECT x2,y2 from t2);
ANY条件および副問合せに式のリストを使用した例を示します。
SELECT * from t1 where (x1,y1) < ANY (SELECT x2,y2 from t2);
次に、ANY条件に式のリストを使用した例を示します。
Command> columnlabels on;
Command> SELECT * FROM t1;
X1, Y1
< 1, 2 >
< 3, 4 >
2 rows found.
Command> SELECT * FROM t2;
X2, Y2
< 3, 4 >
< 1, 2 >
2 rows found.
Command> SELECT * FROM t1 WHERE (x1,y1) < ANY (SELECT x2,y2 from t2);
X1, Y1
< 1, 2 >
1 row found.