3.6.5. Subqueries
サブクエリーは、別の SQL クエリーに埋め込まれた SQL クエリーです。subquery を含むクエリーは、外部クエリーです。
サブクエリータイプ:
- scalar サブクエリー: 1 つの値を持つ単一の列のみを返すサブクエリー。スカラーサブキューは式のタイプであり、単一の値式が想定される場合に使用できます。
- 相関サブクエリー: 外側のクエリーからのコラム参照を含むサブクエリー。
- Uncorrelated subquery - outer サブクエリーへの参照が含まれないサブクエリーです。
インラインビュー
外部クエリーの FROM 句(「インラインビュー」とも呼ばれる)の Subqueries は、任意の数の行と列を返すことができます。このサブクエリーのタイプは常にエイリアスを指定する必要があります。インラインビューは従来のビューとほぼ同じです。WITH 句 も併せて参照してください。
FROM 句のサブクエリーの例(インラインビュー)
SELECT a FROM (SELECT Y.b, Y.c FROM Y WHERE Y.d = '3') AS X WHERE a = X.c AND b = X.b
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 は、式または基準が想定される場所に表示されます。
subqueries は、定量化された基準、EXISTS
述語、IN
述語、および Scalar サブ キューとして使用できます。
EXISTS を使用した WHERE のサブクエリーの例
SELECT a FROM X WHERE EXISTS (SELECT 1 FROM Y WHERE c=X.a)
SELECT a FROM X WHERE EXISTS (SELECT 1 FROM Y WHERE c=X.a)
定量化された比較サブキューの例
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)
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)
SELECT a FROM X WHERE a IN (SELECT b FROM Y WHERE c=3)
Subquery Optimization も参照してください。