Oracle集合操作符union、union all、intersect和minus
废话少说直奔主题:
如果我们需要将两个select语句的结果作为一个整体显示出来,我们就需要用到union或者union all关键字。union(或称为联合)的作用是将多个结果合并在一起显示出来。
union和union all的区别是,union会自动压缩多个结果集合中的重复结果,而union all则将所有的结果全部显示出来,不管是不是重复。
1. union:对两个结果集进行并集操作,不包括重复行,同时进行默认规则的排序;
2. union All:对两个结果集进行并集操作,包括重复行,不进行排序;
3. intersect:对两个结果集进行交集操作,不包括重复行,同时进行默认规则的排序;
4. minus:对两个结果集进行差操作,不包括重复行,同时进行默认规则的排序。
可以在最后一个结果集中指定Order by子句改变排序方式。
例:
1. union:
SELECT * FROM emp
WHERE sal < 1500
UNION
SELECT * FROM emp
WHERE sal BETWEEN 1000 AND 2000
ORDER BY 1;
2. union all:
SELECT * FROM emp
WHERE sal < 1500
UNION ALL
SELECT * FROM emp
WHERE sal BETWEEN 1000 AND 2000
ORDER BY 1;
3. intersect:
SELECT deptno
FROM dept
INTERSECT
SELECT DISTINCT deptno
FROM emp;
DEPTNO
----------
10
20
30
4. minus:
SELECT deptno
FROM dept
MINUS
SELECT DISTINCT deptno
FROM emp;
DEPTNO
----------
40
---------------------
present by dylan.