集合操作,如表2-8所示。
表2-8 集合操作说明
名称 | 描述 |
UNION | 并操作,将UNION关键两端的结果集做并集操作 |
EXCEPT | 差操作,从左侧的结果集中排除掉右侧的结果集 |
INTERSECT | 交集,对两个结果集取做交集操作 |
例2-29:对表t1、t2做UNION操作,如图2-11。
图2-11 UNION示意图
具体语句如下:
SELECT * FROM t1 UNION SELECT * FROM t2;
c1 | c2
----+----
| 2
1 | 2
2 | 2
1 | 1
1 |
(5 rows)
例2-30:对表t1、t2做EXCEPT操作,如图2-12所示。
图2-12 EXCEPT示意图
具体语句如下:
SELECT * FROM t1 EXCEPT SELECT * FROM t2;
c1 | c2
----+----
2 | 2
1 |
(2 rows)
例2-31:对表t1、t2做INTERSECT操作,如图2-13所示。
图2-13 INTERSECT示意图
具体语句如下:
SELECT * FROM t1 INTERSECT SELECT * FROM t2;
c1 | c2
----+----
1 | 2
(1 row)
从示例的结果可以看出,结果集中还做了去重的操作,也就是说UNION、EXCEPT、INTERSECT中还隐式的隐含DISTINCT操作,如果显式的指定上DISTINCT关键字,它们将获得相同的结果。
例2-32:对表t1、t2做UNION DISTINCT操作,如图2-14所示。
图2-14 UNION DISTINCT示意图
具体语句如下:
SELECT * FROM t1 UNION DISTINCT SELECT * FROM t2;
c1 | c2
----+----
| 2
1 | 2
2 | 2
1 | 1
1 |
(5 rows)
如果不需要进行去重,可以通过指定ALL关键字实现。
例2-33:对表t1、t2做UNION ALL操作,如图2-15所示。
图2-15 UNION ALL示意图
具体语句如下:
SELECT * FROM t1 UNION ALL SELECT * FROM t2;
c1 | c2
----+----
1 | 2
1 |
2 | 2
1 | 2
1 | 1
| 2
(6 rows)