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.b

Subqueriesは、式や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を参照してください。