Subqueryは、別のSQL クエリの中に埋め込まれたSQL クエリです。Subquery を含むクエリはアウタークエリと呼ばれます。
CData Virtuality Server は以下のサブクエリタイプをサポートしています:
- スカラー・サブクエリ - 値が1つのカラムのみを返すサブクエリ。スカラーSubqueriesは式の一種であり、単一値式が期待される場合に使用できます;
- 相関サブクエリ - 外側のクエリへのカラム参照を含むサブクエリ;
- 非相関サブクエリ - 外側のサブクエリへの参照を含まないサブクエリ。
Inline Views
外部クエリのFROM句のサブクエリ(インラインビューとしても知られています)は、任意の数の行と列を返すことができます。このタイプの Subquery には常に別名を指定する必要があります。インラインビューは従来のビューとほぼ同じです。詳しくはWITH Clauseをご覧ください。
以下はその例です:
SELECT a FROM (SELECT Y.b, Y.c FROM Y WHERE Y.d = '3') AS X WHERE a = X.c AND b = X.bSubqueriesは、式やCriteriaが予想される場所であればどこにでも出現させることができます。
副問い合わせは、定量化された条件、EXISTS述語、IN述語、スカラー副問い合わせでサポートされています:
SELECT a FROM X WHERE EXISTS (SELECT 1 FROM Y WHERE c=X.a)以下は、定量化比較 Subqueries のより洗練された例です:
SELECT a FROM X WHERE a >= ANY (SELECT b FROM Y WHERE c=3) SELECT a FROM X WHERE a < SOME (SELECT b FROM Y WHERE c=4) SELECT a FROM X WHERE a = ALL (SELECT b FROM Y WHERE c=2)そして、IN述語を使った例です:
SELECT a FROM X WHERE a IN (SELECT b FROM Y WHERE c=3)Subqueries は最適化することができます - 詳しくはSubquery Optimizationを参照してください。