千家信息网

Oracle的集合操作(union、union all、intersect、minus集合函数)

发表于:2024-11-14 作者:千家信息网编辑
千家信息网最后更新 2024年11月14日,Oracle中的集合操作用于多条select语句合并结果。用于集合操作的函数如下:union 并集 去重 //默认有排序操作union all 并集 不去重 //默认不排序intersect 交集 /
千家信息网最后更新 2024年11月14日Oracle的集合操作(union、union all、intersect、minus集合函数)

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

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

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

intersect 交集 //并且去重排序

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

1.union

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

示例:

select deptno,ename from emp where deptno in (20,30)unionselect deptno,ename from emp where deptno in (20,10);    DEPTNO ENAME---------- ----------10 CLARK10 KING10 MILLER20 ADAMS20 FORD20 JONES20 SCOTT20 SMITH30 ALLEN30 BLAKE30 JAMES30 MARTIN30 TURNER30 WARD14 rows selected.

2.union all

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

示例:

select deptno,ename from emp where deptno in (20,30)union allselect deptno,ename from emp where deptno in (20,10);    DEPTNO ENAME---------- ----------20 SMITH30 ALLEN30 WARD20 JONES30 MARTIN30 BLAKE20 SCOTT30 TURNER20 ADAMS30 JAMES20 FORD20 SMITH20 JONES10 CLARK20 SCOTT10 KING20 ADAMS20 FORD10 MILLER19 rows selected.

3.intersect

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

示例:

select deptno,ename from emp where deptno in (20,30)intersectselect deptno,ename from emp where deptno in (20,10);    DEPTNO ENAME---------- ----------20 ADAMS20 FORD20 JONES20 SCOTT20 SMITH5 rows selected

4.minus

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

示例:

select deptno,ename from emp where deptno in (20,30)minusselect deptno,ename from emp where deptno in (20,10);    DEPTNO ENAME---------- ----------30 ALLEN30 BLAKE30 JAMES30 MARTIN30 TURNER30 WARD6 rows selected.
0