Oracle中的集合操作用于多条select语句合并结果。用于集合操作的函数如下:

union 并集 去重 //默认有排序操作

union all 并集 不去重 //默认不排序

intersect 交集 //并且去重排序

minus 差集 // 前表中有,后表中没有的差集

1.union

A集合和B集合的合并,但去掉两集合重复的部分 会排序。

示例:

selectdeptno,enamefromempwheredeptnoin(20,30)unionselectdeptno,enamefromempwheredeptnoin(20,10);DEPTNOENAME--------------------10CLARK10KING10MILLER20ADAMS20FORD20JONES20SCOTT20SMITH30ALLEN30BLAKE30JAMES30MARTIN30TURNER30WARD14rowsselected.

2.union all

A集合和B集合的合并,不去重,不排序。

示例:

selectdeptno,enamefromempwheredeptnoin(20,30)unionallselectdeptno,enamefromempwheredeptnoin(20,10);DEPTNOENAME--------------------20SMITH30ALLEN30WARD20JONES30MARTIN30BLAKE20SCOTT30TURNER20ADAMS30JAMES20FORD20SMITH20JONES10CLARK20SCOTT10KING20ADAMS20FORD10MILLER19rowsselected.

3.intersect

两个集合的交集部分,排序并去重。

示例:

selectdeptno,enamefromempwheredeptnoin(20,30)intersectselectdeptno,enamefromempwheredeptnoin(20,10);DEPTNOENAME--------------------20ADAMS20FORD20JONES20SCOTT20SMITH5rowsselected

4.minus

取两个集合的差集,A集合中存在,B集合中不存在的数据(取A集合中B集合不存在的数据) 去重。

示例:

selectdeptno,enamefromempwheredeptnoin(20,30)minusselectdeptno,enamefromempwheredeptnoin(20,10);DEPTNOENAME--------------------30ALLEN30BLAKE30JAMES30MARTIN30TURNER30WARD6rowsselected.