UNION 句
UNION は、UNION ALL または UNION DISTINCT を明示的に指定して使用できます。
ALL または DISTINCT を指定しない場合は、union_default_mode 設定の値が使用されます。UNION ALL と UNION DISTINCT の違いは、UNION DISTINCT が UNION の結果に対して重複排除(distinct 変換)を行う点であり、UNION ALL を含むサブクエリに対して SELECT DISTINCT を実行することと等価です。
UNION を使用して、結果を結合することで任意の数の SELECT クエリをまとめることができます。例:
結果列はインデックス(SELECT 内での順序)によって対応付けられます。列名が一致しない場合、最終結果の列名は最初のクエリから取得されます。
UNION では型キャストが行われます。たとえば、結合される 2 つのクエリで、互換性のある型に対して一方が非 Nullable 型、もう一方が Nullable 型の同じフィールドを持つ場合、結果の UNION ではそのフィールドは Nullable 型になります。
UNION の一部であるクエリは丸括弧で囲むことができます。ORDER BY と LIMIT は最終結果に対してではなく、それぞれの個別クエリに対して適用されます。最終結果に対して変換処理を適用する必要がある場合は、UNION を用いたすべてのクエリを FROM 句内のサブクエリに含めることができます。
UNION ALL または UNION DISTINCT を明示的に指定せずに UNION を使用する場合は、union_default_mode 設定を使用して UNION のモードを指定できます。設定値としては ALL、DISTINCT、または空文字列を指定できます。ただし、union_default_mode 設定を空文字列にした状態で UNION を使用すると、例外がスローされます。次の例は、設定値が異なる場合のクエリ結果を示します。
クエリ:
結果:
クエリ:
結果:
UNION / UNION ALL / UNION DISTINCT を構成する各クエリは同時に実行され、その結果はまとめてマージされます。
関連項目