Oracle之集合运算
交集 INTERSECT :取两个查询结果集的共有部分
SELECT DEPTNO FROM EMP
INTERSECT
SELECT DEPTNO FROM DEPT;
补集 MINUS :用第一个查询结果集减去第二个查询结果集的结果(常用于检测两个表数据是否一致)
SELECT DEPTNO FROM EMP
MINUS
SELECT DEPTNO FROM DEPT;
SELECT DEPTNO FROM DEPT
MINUS
SELECT DEPTNO FROM EMP;
并集 UNION :取两个查询结果集的所有结果(去重)
UNION ALL :取两个查询结果集的所有结果(不去重)
SELECT DEPTNO FROM EMP
UNION
SELECT DEPTNO FROM DEPT;
SELECT DEPTNO FROM EMP
UNION ALL
SELECT DEPTNO FROM DEPT;
注意:集合运算查询所返回的列数以及列的数据类型、列名必须匹配。
集合运算中只有UNION ALL不会去重。其他三个都会排序后去重,性能比较差。