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を参照してください。