2 つの問い合わせの結果は、和、積、差の集合演算を使って結合することができます。構文は以下のとおりです。
query1 UNION [ALL] query2 query1 INTERSECT [ALL] query2 query1 EXCEPT [ALL] query2
query1 と query2 は、これまでに述べたいかなる機能にも使うことができる問い合わせです。集合演算は入れ子にしたり、連結することができます。たとえば、以下の文を見てみましょう。
query1 UNION query2 UNION query3
上記の文は、本当は以下の文を意味します。
(query1 UNION query2) UNION query3
UNION は、query2 の結果を query1 の結果に付加します(しかし、実際に行が返された順序である保証はありません)。さらに、ALL を指定しないと、DISTINCT と同様に、すべての重複している行を削除します。
INTERSECT は、query1 の結果と query2 の結果の両方に含まれているすべての行を返します。重複している行は、ALL を指定しないと削除されます。
EXCEPT は、query1 の結果には含まれているけれども、query2 の結果には含まれていないすべての行を返します。繰り返しですが、重複は ALL を指定しないと削除されます。
2 つの問い合わせの和、積、差を算出するために、そこの 2 つの問い合わせは "union 互換"でなければいけません。つまり、2 つの問い合わせが同じ数の列を返し、対応する列は互換性のあるデータ型(Section 5.6を参照)でなければなりません。