ORACLE--集合
来源:互联网 发布:剑网3男性捏脸夜帝数据 编辑:程序博客网 时间:2024/06/05 16:21
- union和union all
Union因为要进行重复值扫描,所以效率低。如果合并没有刻意要删除重复行,那么就使用Union All
两个要联合的SQL语句字段个数必须一样,而且字段类型要“相容”(一致);
如果我们需要将两个select语句的结果作为一个整体显示出来,我们就需要用到union或者union all关键字。union(或称为联合)的作用是将多个结果集合并在一起显示出来。
- union和union all的区别:
union会自动压缩多个结果集合中的重复结果(去重),而union all则将所有的结果全部显示出来,不管是不是重复。
Union:对两个结果集进行并集操作,不包括重复行,同时进行默认规则的排序;
Union All:对两个结果集进行并集操作,包括重复行,不进行排序;
Intersect:对两个结果集进行交集操作,不包括重复行,同时进行默认规则的排序;
Minus:对两个结果集进行差操作,不包括重复行,同时进行默认规则的排序。
可以在最后一个结果集中指定Order by子句改变排序方式。
1、union自动将两个结果集中重复的数据进行合并只展示一条(两个或是多个结果集去重合并)
selectempno,ename,job,sal,deptno from emp where deptno>=20
union
select empno,ename,job,sal,deptno from empwhere deptno<30
order by sal;
EMPNOENAME JOB SAL DEPTNO
--------------- --------- --------- ------
7369 SMITH CLERK 800.00 20
7900 JAMES CLERK 950.00 30
7876 ADAMS CLERK 1100.00 20
7521 WARD SALESMAN 1250.00 30
7654 MARTIN SALESMAN 1250.00 30
7934 MILLER CLERK 1300.00 10
8888 测试数据 旺旺 1300.00 10
7844 TURNER SALESMAN 1500.00 30
7499 ALLEN SALESMAN 1760.00 30
7782 CLARK MANAGER 2450.00 10
7698 BLAKE MANAGER 2850.00 30
7566 JONES MANAGER 2975.00 20
7788 SCOTT ANALYST 3000.00 20
7902 FORD ANALYST 3000.00 20
7839 KING PRESIDENT 5000.00 10
2、union all只会将两个结果集进行合并展示,但不会去重复(两个或多个结果集不去重合并)
selectempno,ename,job,sal,deptno from emp where deptno>=20
unionall
selectempno,ename,job,sal,deptno from emp where deptno<30
orderby sal;
EMPNOENAME JOB SAL DEPTNO
--------------- --------- --------- ------
7369 SMITH CLERK 800.00 20
7369 SMITH CLERK 800.00 20
7900 JAMES CLERK 950.00 30
7876 ADAMS CLERK 1100.00 20
7876 ADAMS CLERK 1100.00 20
7521 WARD SALESMAN 1250.00 30
7654 MARTIN SALESMAN 1250.00 30
7934 MILLER CLERK 1300.00 10
8888 测试数据 旺旺 1300.00 10
7844 TURNER SALESMAN 1500.00 30
7499 ALLEN SALESMAN 1760.00 30
7782 CLARK MANAGER 2450.00 10
7698 BLAKE MANAGER 2850.00 30
7566 JONES MANAGER 2975.00 20
7566 JONES MANAGER 2975.00 20
7902 FORD ANALYST 3000.00 20
7788 SCOTT ANALYST 3000.00 20
7902 FORD ANALYST 3000.00 20
7788 SCOTT ANALYST 3000.00 20
7839 KING PRESIDENT 5000.00 10
3、intersect将两个或多个结果集进行交集处理(交集处理,去重复)
SQL>select job,deptno from emp;
JOB DEPTNO
---------------
CLERK 20
SALESMAN 30
SALESMAN 30
MANAGER 20
SALESMAN 30
MANAGER 30
MANAGER 10
ANALYST 20
PRESIDENT 10
SALESMAN 30
CLERK 20
CLERK 30
ANALYST 20
CLERK 10
旺旺 10
15rows selected
SQL>select distinct job,deptno from emp;
JOB DEPTNO
---------------
MANAGER 20
PRESIDENT 10
CLERK 10
SALESMAN 30
旺旺 10
ANALYST 20
MANAGER 30
MANAGER 10
CLERK 30
CLERK 20
10rows selected
SQL>select job,deptno from emp intersect select job,deptno from emp;
JOB DEPTNO
---------------
ANALYST 20
CLERK 10
CLERK 20
CLERK 30
MANAGER 10
MANAGER 20
MANAGER 30
PRESIDENT 10
SALESMAN 30
旺旺 10
10rows selected
SQL>select job,deptno from emp intersect select job,deptno from emp order by deptno;
JOB DEPTNO
---------------
CLERK 10
MANAGER 10
PRESIDENT 10
旺旺 10
ANALYST 20
CLERK 20
MANAGER 20
CLERK 30
MANAGER 30
SALESMAN 30
10rows selected
4、minus差集处理(差集处理且要去重)
SQL>select * from dept;
DEPTNODNAME LOC
-------------------- -------------
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS BOSTON
SQL>select * from mydept;
DEPTNODNAME LOC
-------------------- -------------
10 ACCOUNTING NEW YORK
40 OPERATIONS BOSTON
SQL>select * from dept minus select * from mydept;
DEPTNODNAME LOC
-------------------- -------------
20 RESEARCH DALLAS
30 SALES CHICAGO
SQL>select * from mydept minus select * from dept;
DEPTNODNAME LOC
-------------------- -------------
总结:minus进行差集去重处理时select语句表的前后顺序不同,则查询出来的结果也不一样。
- oracle集合
- oracle 集合
- Oracle集合
- oracle 集合
- ORACLE--集合
- 【Oracle】Oracle中的集合类型
- oracle的集合类型
- Oracle的集合操作
- oracle集合介绍
- Oracle 错误集合
- oracle权限问题集合
- oracle 问题集合
- Oracle权限集合
- Oracle 错误集合
- Oracle函数集合
- Oracle的集合操作
- Oracle集合的方法
- ORACLE 数据集合
- Intellij IDEA远程debug
- python操作mongoDB的时候遇到问题,find()结果无法保存
- 常用的Mysql数据库操作语句大全
- JS时间戳和时间之间转换
- centos7.1下yum安装并使用apache web服务器
- ORACLE--集合
- qemu1.0编译及kvm支持
- spring mvc的配置文件解析
- SVN
- 亚当·扎加耶夫斯基诗十二首
- 手机蓝牙对应的各类服务对应的UUID(常用已通过验证的几个)
- Unicode和ASCII的区别是什么?
- edx devstack 安装
- 向Linus学管理