EXISTS条件は、表の副問合せの有無を確認します。EXISTSの場合は副問合せで1行以上を返す場合、NOT EXISTSの場合は行を返さない場合に、条件がTRUEと評価されます。
[NOT] EXISTS (Subquery
)
パラメータ
EXISTS条件には、次のパラメータがあります。
パラメータ | 説明 |
---|---|
Subquery |
副問合せの構文については、「副問合せ」を参照してください。 |
説明
副問合せとEXISTSを組み合せて指定すると、行の存在についてテストできます。EXISTSは行の空のセットの有無をテストします。副問合せが1行以上の行を返す場合、副問合せはTRUEと評価されます。
副問合せとNOT EXISTSを組み合せて指定すると、行の不在についてテストできます。NOT EXISTSは行の空のセットの有無をテストします。副問合せが行を返さない場合、副問合せはTRUEと評価されます。
結合順序がNOT EXISTS副問合せの結合順序の要件と競合するttOptSetOrder
組込みプロシージャを使用して発行される場合、指定された結合順序は無視され、警告が発行されて問合せが実行されます。
次の表に、TimesTenでのEXISTSおよびNOT EXISTSの使用方法について、サポートの有無を示します。
問合せ/副問合せの説明 | NOT EXIST | EXIST |
---|---|---|
副問合せでの集計 | サポートあり | サポートあり |
メインの問合せでの集計 | サポートあり | サポートあり |
OR句での副問合せ | サポートあり | サポートあり |
ttOptSetOrder 組込みプロシージャを使用した結合順序 |
制限付きサポート | サポートあり |
例
1件以上の未発送の発注がある顧客を検索します。
SELECT customers.name FROM customers WHERE EXISTS (SELECT 1 FROM orders WHERE customers.id = orders.custid AND orders.status = 'un-shipped');
未発送の発注がない顧客を検索します。
SELECT customers.name FROM customers WHERE NOT EXISTS (SELECT 1 FROM orders WHERE customers.id = orders.custid AND orders.status = 'un-shipped');