>  기사  >  데이터 베이스  >  Oracle基础教程:集合操作

Oracle基础教程:集合操作

WBOY
WBOY원래의
2016-06-07 17:11:35818검색

集合操作 用于多条select语句合并结果 union 并集 去重 union all 并集 不去重 intersect 交集 minus 差集 union A集合和B集

集合操作 
 用于多条select语句合并结果
 
 union  并集 去重
 union all 并集 不去重
 intersect 交集
 minus  差集
 
union
 A集合和B集合的合并,但去掉两集合重复的部分 会排序
SCOTT@ora10g> select deptno,ename from emp where deptno in (20,30)
  2           union
  3           select deptno,ename from emp where deptno in (20,10)
  4  ;
    DEPTNO ENAME
---------- ----------
 10 CLARK
 10 KING
 10 MILLER
 20 ADAMS
 20 FORD
 20 JONES
 20 SCOTT
 20 SMITH
 30 ALLEN
 30 BLAKE
 30 JAMES
 30 MARTIN
 30 TURNER
 30 WARD

14 rows selected.

SCOTT@ora10g>

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

SCOTT@ora10g> select deptno,ename from emp where deptno in (20,30)
  2       union all
  3       select deptno,ename from emp where deptno in (20,10)
  4*
SCOTT@ora10g> /

    DEPTNO ENAME
---------- ----------
 20 SMITH
 30 ALLEN
 30 WARD
 20 JONES
 30 MARTIN
 30 BLAKE
 20 SCOTT
 30 TURNER
 20 ADAMS
 30 JAMES
 20 FORD
 20 SMITH
 20 JONES
 10 CLARK
 20 SCOTT
 10 KING
 20 ADAMS
 20 FORD
 10 MILLER

19 rows selected.

SCOTT@ora10g>

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

SCOTT@ora10g> select deptno,ename from emp where deptno in (20,30)
  2       intersect
  3       select deptno,ename from emp where deptno in (20,10)
  4*
SCOTT@ora10g> /

    DEPTNO ENAME
---------- ----------
 20 ADAMS
 20 FORD
 20 JONES
 20 SCOTT
 20 SMITH

SCOTT@ora10g>

minus
 取两个集合的差集,A集合中存在,B集合中不存在的数据(取A集合中B集合不存在的数据) 去重
SCOTT@ora10g>  select deptno,ename from emp where deptno in (20,30)
  2       minus
  3       select deptno,ename from emp where deptno in (20,10)
  4*
SCOTT@ora10g>

    DEPTNO ENAME
---------- ----------
 30 ALLEN
 30 BLAKE
 30 JAMES
 30 MARTIN
 30 TURNER
 30 WARD

6 rows selected.

SCOTT@ora10g>

linux

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.