PostgreSQL の Union および Union All は、2 つ以上のテーブルから結合された (行バインドされた) 値を返します。Union は結合後に重複を削除します。Union All は重複を削除しません。

UNION と UNION ALL はどちらも 2 つの異なる SQL の結果を連結します。重複の処理方法が異なります。

PostgreSQL の Union:結果セットに対してDISTINCTを実行し、重複行を削除します。UNIONは連結し、重複行も削除します。

PostgreSQL での union と union all 1

Union all in PostgreSQL: Union はすべての連結を行いますが、重複は削除しません。

PostgreSQL での union と union all 2

例を挙げて説明しましょう。2つのテーブルを例に挙げましょう

表1:SummerFruits

PostgreSQL での union と union all 3

表1:SummerFruits

PostgreSQL での union と union all 4


PostgreSQL の Union:

SELECT * FROM SummerFruits
UNION
SELECT * FROM Fruits

Unionは連結し、重複も削除するので、結果のテーブルは次のようになります。

出力:

PostgreSQL での union と union all 5

PostgreSQL での Union ALL:

SELECT * FROM SummerFruits
UNION ALL
SELECT * FROM Fruits

「Union All」は連結し、重複を削除しないので、結果のテーブルは次のようになります。

出力:

PostgreSQL での union と union all 6