Welcome 微信登录

首页 / 数据库 / MySQL / Oracle基础教程:集合操作

集合操作 
 用于多条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 WARD14 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 MILLER19 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 SMITHSCOTT@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 WARD6 rows selected.SCOTT@ora10g>Oracle基础教程:多表查询、SQL99Oracle-如何让表的一个列自动增长相关资讯      oracle数据库教程 
  • Oracle raw数据类型介绍  (01/29/2013 10:05:53)
  • 监听器注册与ORA-12514 错误分析  (11/13/2012 14:30:08)
  • Oracle SQL的cursor理解  (11/13/2012 14:16:17)
  • Oracle 如何强制刷新Buffer Cache  (01/29/2013 10:02:46)
  • dblink致Oracle库的SCN变成两库的  (11/13/2012 14:24:41)
  • Linux操作系统下完全删除Oracle数  (11/13/2012 08:25:52)
本文评论 查看全部评论 (0)
表情: 姓名: 字数