| PostgreSQL 7.4 文檔 | ||||
|---|---|---|---|---|
| Prev | Fast Backward | Chapter 7. 查詢 | Fast Forward | Next |
兩個查詢的結果可以用集合操作並,交,和異進行組合。語法是
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 的結果上(不過我們不能保證這就是這些行實際返回的順序)並且刪除所有重復的行, 就象DISTINCT做的那樣,除非你聲明了UNION ALL。
INTERSECT 返回那些同時存在于 query1 的結果中和 query2的結果中的行,除非聲明了INTERSECT ALL, 否則所有重復行都被刪除。
EXCEPT 返回所有在 query1 的結果中但是不在 query2 的結果中的行。 (有時侯這叫做兩個查詢的差。) 除非聲明了 EXCEPT ALL,否則所有重復行都被刪除。
為了計算兩個查詢的並,交,或異,這兩個查詢必須是"並集兼容的",也就意味著它們都返回同樣數量的列, 並且對應的列有兼容的數據類型,象 Section 10.5 裡描述的那樣。