2.3. 問い合わせの結合

二つの問い合わせの結果は、和、積、差の集合演算を用いて結合すること ができます。構文は以下の通りです。

query1 UNION [ALL] query2
query1 INTERSECT [ALL] query2
query1 EXCEPT [ALL] query2
query1query2 はこれまでに述べたいかなる機能にも 使うことができる問い合わせです。集合演算は入れ子にしたり、繋げたり することができます。たとえば、
query1 UNION query2 UNION query3
は本当は
(query1 UNION query2) UNION query3
ということです。

UNIONquery2の結果を query1の結果に付加します (しかし、実際に 行が返された順序である保証はありません)。 さらに、ALLを指定しないと、DISTINCTと同様に、すべての重複している行 を削除します。

INTERSECTquery1の結 果とquery2の結果の両方に含まれている全て の行を返します。重複している行は、ALLを指定しないと削除されます。

EXCEPTquery1の結果 には含まれているけれども、query2の結果に は含まれていないすべての行を返します。繰り返しですが、重複はALLを指 定しないと削除されます。

二つの問い合わせの和、積、差を算出するために、そこの二つの問い合わせは"union compatible"でなければなりません。つまり、二つの問い合わせが 同じ数の列を返し、一致する列は互換性のあるデータ型 (Section 5.5を参照してください)でなければ なりません。