UNION は、UNION ALL または UNION DISTINCT を明示的に指定して使用できます。
ALL または DISTINCT を指定しない場合の動作は、union_default_mode 設定に依存します。UNION ALL と UNION DISTINCT の違いは、UNION DISTINCT では結合結果に対して重複排除が行われる点です。これは、UNION ALL を含むサブクエリに対して SELECT DISTINCT を実行するのと同等です。
UNION を使用すると、結果を連結して任意の数の SELECT クエリを結合できます。例:
Query
SELECT 内での順序) に基づいて対応付けられます。カラム名が一致しない場合、最終結果のカラム名は最初のクエリから取得されます。
ユニオンでは型変換が行われます。たとえば、結合する 2 つのクエリに、互換性のある型で、同じフィールドが一方では非 Nullable 型、もう一方では Nullable 型として含まれている場合、結果の UNION ではそのフィールドは Nullable 型になります。
UNION を構成するクエリは () で囲むことができます。ORDER BY と LIMIT は最終結果ではなく、それぞれのクエリに適用されます。最終結果に変換を適用する必要がある場合は、UNION を含むすべてのクエリを FROM 句のサブクエリに入れることができます。
UNION ALL または UNION DISTINCT を明示的に指定せずに UNION を使用する場合は、union_default_mode 設定を使ってユニオンモードを指定できます。設定値には ALL、DISTINCT、または空文字列を指定できます。ただし、union_default_mode 設定が空文字列の状態で UNION を使用すると、例外が発生します。以下の例は、設定値ごとのクエリ結果を示しています。
Query
Response
Query
Response
UNION/UNION ALL/UNION DISTINCT を構成するクエリは同時に実行される場合があり、その結果は混在することがあります。
関連項目