外問合わせが外側にあってサブクエリーを収容している場合に、その外問合わせの中にある外テーブルの列をそのサブクエリーが参照すると、そのサブクエリーは相関関係を持ちます。
相関サブクエリーの定義
相関サブクエリーという表現は、内問合わせと外問合わせの両方で同じテーブルを参照している相関subqueryではすべて、相関名を使わなければならないという明示的要件に由来します。
内問合わせを収容している問合わせに対するその内問合わせからの参照をこの図に詳細に示してあります。
内テーブルが別のテーブルの外部キー列を参照する場合、内WHERE句内でそれらの列を完全修飾する必要があります。
相関サブクエリーを使用する目的は、ABORT、DELETE、INSERT、およびUPDATEを含むすべての標準SQL DML文内に暗黙ループ機能を備えるためです。
内式の中にある変数によって、外式の中にある変数を参照する方法は、外部参照と呼ばれます。
スカラーSUBQUERY参照テーブルの入った問合わせの状態 | その結果 |
---|---|
自身のFROM句内で参照されていない。 | 相関関係が成立します。 |
自身のFROM句内で参照されている。 | 非相関。 |
内問合わせから外問合わせに対して列参照を行なう場合、外問合わせのFROM句にある適正なテーブル名を使って完全修飾しなければなりません。
ANSI準拠
相関サブクエリーはANSI SQL:2011に準拠しています。
関連トピック
相関サブクエリーの詳細は、以下を参照してください。