EXISTS条件

EXISTS条件は、表の副問合せの有無を確認します。EXISTSの場合は副問合せで1行以上を返す場合、NOT EXISTSの場合は行を返さない場合に、条件がTRUEと評価されます。

SQL構文

[NOT] EXISTS (Subquery)

パラメータ

EXISTS条件には、次のパラメータがあります。

パラメータ 説明

Subquery

構文の詳細は、「副問合せ」を参照してください。

説明

  • 副問合せとEXISTSを組み合せて指定すると、行の存在についてテストできます。EXISTSは行の空のセットの有無をテストします。副問合せが1行以上の行を返す場合、副問合せはTRUEと評価されます。

  • 副問合せとNOT EXISTSを組み合せて指定すると、行の不在についてテストできます。NOT EXISTSは行の空のセットの有無をテストします。副問合せが行を返さない場合、副問合せはTRUEと評価されます。

  • 結合順序がNOT EXISTS副問合せの結合順序の要件と競合するttOptSetOrder組込みプロシージャを使用して発行される場合、指定された結合順序は無視され、警告が発行されて問合せが実行されます。

  • 次の表に、TimesTenでのEXISTSおよびNOT EXISTSの使用方法について、サポートの有無を示します。

    問合せ/副問合せの説明 Not Exists Exists

    副問合せでの集計

    サポート

    サポート

    メインの問合せでの集計

    サポート

    サポート

    OR句での副問合せ

    サポート

    サポート

    ttOptSetOrder組込みプロシージャを使用した結合順序

    制限付きサポート

    サポート

1件以上の未発送の発注がある顧客を検索します。

SELECT customers.name FROM customers
WHERE EXISTS (SELECT 1 FROM orders 
WHERE customers.id = orders.custid 
AND orders.status = 'unshipped');

未発送の発注がない顧客を検索します。

SELECT customers.name FROM customers
WHERE NOT EXISTS (SELECT 1 FROM orders 
WHERE customers.id = orders.custid 
AND orders.status = 'unshipped');