ANY/ IN条件(副問合せ)
ANY条件は、比較演算子を使用して2つの式を比較します。最初の式が、副問合せによって返されるすべての行と、比較演算子で指定したとおりの関係である場合、条件はTRUEと評価されます。同様に、IN条件は、表の副問合せと式(または式のリスト)を比較します。式(または式のリスト)が副問合せによって返された値と等しい場合、IN条件はTRUEと評価されます。
SQL構文
RowValueConstructor{CompOpANY | IN} (Subquery)
RowValueConstructorの構文は、次のとおりです。
RowValueConstructorElement| (RowValueConstructorList) |Subquery
RowValueConstructorListの構文は、次のとおりです。
RowValueConstructorElement[{,RowValueConstructorElement} ... ]
RowValueConstructorElementの構文は、次のとおりです。
Expression | NULL
CompOpの構文は、次のとおりです。
{= | <> | > | >= | < | <= }パラメータ
説明
ANY条件では、0(ゼロ)行以上の行を返し、キーワードANYを使用して変更される比較演算子を使用します。TimesTenで互換性のある異なるデータ型の値が比較される方法については、「数値データ型」を参照してください。
例
この例では、1件以上の未発送の発注がある顧客のリストを取得します。
SELECT customers.name FROM customers WHERE customers.id = ANY (SELECT orders.custid FROM orders WHERE orders.status = 'unshipped');
これは、副問合せを含むIN条件の例です。1件以上の未発送の発注がある顧客をSELECT文で選択します。
SELECT customers.name FROM customers WHERE customers.id IN (SELECT orders.custid FROM orders WHERE orders.status = 'unshipped');
この例では、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.