PostgreSQL の EXCEPT では、最初のテーブルにはあるが 2 番目のテーブルにはない行を返します。(つまり) Except 演算子は PostgreSQL で集合の差を実行します。Except 演算子は重複を削除します。Except ALL は重複を削除しません。

両方PostgreSQL EXCEPT EXCEPT ALL2 つの異なる SQL の共通行を返します。重複の処理方法が異なります。Except in PostgreSQLの場合:結果セットに対してDISTINCTを実行し、PostgreSQL で集合の差を返します。

PostgreSQL の Except と Except ALL (PostgreSQL の Set Difference) 1

PostgreSQL の EXCEPT ALL:差集合を実行しますが、重複は削除しません

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

表1:SummerFruits

PostgreSQL の Except と Except ALL (PostgreSQL の Set Difference) 2

表2:Fruits

PostgreSQL の Except と Except ALL (PostgreSQL の Set Difference) 3


PostgreSQL の EXCEPT
:

SELECT * FROM SummerFruits
EXCEPT
SELECT * FROM Fruits

EXCEPTは差集合を取得し、重複も削除するので、結果のテーブルは次のようになります。

出力:

PostgreSQL の Except と Except ALL (PostgreSQL の Set Difference) 4

PostgreSQL の EXCEPT ALL:

SELECT * FROM SummerFruits
EXCEPT ALL
SELECT * FROM Fruits

EXCEPT ALLはセットの差を取得し、重複を削除しないので、結果のテーブルは次のようになります。

出力:

PostgreSQL の Except と Except ALL (PostgreSQL の Set Difference) 5