| PostgreSQL 8.0.0 中文文件(轉譯自 PostgreSQL 中國 製作的簡體中文版本) | ||||
|---|---|---|---|---|
| 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 裡描述的那樣。