union 与 union all 及其他并集操作说明
Union 与 Union ALL 的作用都是合并 SELECT 的查询结果集,那么它们有什么不同呢?
Union 将查询到的结果集合并后进行重查,将其中相同的行去除。缺点:效率低;
而Union ALL 则只是合并查询的结果集,并不重新查询,效率高,但是可能会出现冗余数据。
我们举个例子来说明一下:
比如数据库中有两张表 tab1 和 tab2。
tab1 中的数据有:
小王 |
小张 |
tab2 中的数据有:
小王 |
小李 |
执行查询:
结果如下:
小王 |
小张 |
小李 |
如果执行如下查询:
SELECT * FROM tab1 UNION ALL SELECT * FROM tab2
则结果如下:
小王 |
小张 |
小王 |
小李 |
这回看出来有什么不同了吧?
union和union all的区别是,union会自动压缩多个结果集合中的重复结果,而union all则将所有的结果全部显示出来,不管是不是重复。
Union:对两个结果集进行并集操作,不包括重复行,同时进行默认规则的排序;
Union All:对两个结果集进行并集操作,包括重复行,不进行排序;
Intersect:对两个结果集进行交集操作,不包括重复行,同时进行默认规则的排序;
Minus:对两个结果集进行差操作,不包括重复行,同时进行默认规则的排序。
可以在最后一个结果集中指定Order by子句改变排序方式。
例如:
select employee_id,job_id from employees
union
select employee_id,job_id from job_history
以上将两个表的结果联合在一起。这两个例子会将两个select语句的结果中的重复值进行压缩,也就是结果的数据并不是两条结果的条数的和。如果希望即使重复的结果显示出来可以使用union all,例如:
2.在oracle的scott用户中有表emp
select * from emp where deptno >= 20
union all
select * from emp where deptno <= 30
这里的结果就有很多重复值了。
有关union和union all关键字需要注意的问题是:
union 和 union all都可以将多个结果集合并,而不仅仅是两个,你可以将多个结果集串起来。
使用union和union all必须保证各个select 集合的结果有相同个数的列,并且每个列的类型是一样的。但列名则不一定需要相同,oracle会将第一个结果的列名作为结果集的列名。例如下面是一个例子:
select empno,ename from emp
union
select deptno,dname from dept
我们没有必要在每一个select结果集中使用order by子句来进行排序,我们可以在最后使用一条order by来对整个结果进行排序。例如:
select empno,ename from emp
union
select deptno,dname from dept
order by ename;
转载于:https://www.cnblogs.com/mosh/p/5597735.html
union 与 union all 及其他并集操作说明相关推荐
- php union all,Union与Union All的区别
Union与Union All的区别 如果我们需要将两个select语句的结果作为一个整体显示出来,我们就需要用到union或者union all关键字.union(或称为联合)的作用是将多个结果合并 ...
- Union和Union All的区别
Union和Union All的区别 假设我们有一个表Student,包括以下字段与数据: drop table student; create table student ( id int pr ...
- Union和Union All到底有什么区别
转自:https://www.cnblogs.com/wen-zi/p/9133754.html 以前一直不知道Union和Union All到底有什么区别,今天来好好的研究一下,网上查到的结果是下面 ...
- Oracle中的Union、Union All、Intersect、Minus 使用用法区别
Oracle中的Union.Union All.Intersect.Minus 众所周知的几个结果集集合操作命令,今天详细地测试了一下,发现一些问题,记录备考. 假设我们有一个表Student,包 ...
- SQL Union 和 Union All 的区别以及二者的性能问题 - 使用Sqlite演示
1 Union 和 Union All 的区别 Union:对两个结果集进行并集操作,不包括重复行,同时进行默认规则的排序: Union All:对两个结果集进行并集操作,包括重复行,不进行排序: 也 ...
- oracle union 类型转换,Oracle 中 union 和union all 的简单使用说明
1.刚刚工作不久,经常接触oracle,但是对oracle很多东西都不是很熟.今天我们来了解一下union和union all的简单使用说明.Union(union all): 指令的目的是将两个 S ...
- Oracle中的Union、Union All、Intersect、Minus
Oracle中的Union.Union All.Intersect.Minus 众所周知的几个结果集集合操作命令,今天详细地测试了一下,发现一些问题,记录备考. 假设我们有一个表Student,包括 ...
- sql中union和union all的区别
union 连接两个表查询的结果 假设我们有一个表Student,包括以下字段与数据: [c-sharp] view plaincopy drop table student; create tabl ...
- UNION 和UNION ALL的区别
Union因为要进行重复值扫描,所以效率低.如果合并没有刻意要删除重复行,那么就使用Union All 两个要联合的SQL语句 字段个数必须一样,而且字段类型要"相容"(一致): ...
最新文章
- linux常用性能分析命令详解#TOP
- java.util.ComparableTimSort中的sort()方法简单分析
- C#.NET DataGridView 让部分单元格变成只读的例子程序
- docker容器的跨主机访问
- fastadmin出现token验证错误!_gitee 拥有3.7k星星的极速后台框架—FastAdmin了解一下...
- vue+vuex的应用笔记
- 学会计需要学计算机应用吗,会计都要学什么
- grub4dos进入linux,GRUB4DOS怎么进入系统?GRUB4DOS进入系统的详细步骤
- 史上最全的画册制作流程—设计前的策划
- 梦工厂将在红帽峰会畅谈云计算心得
- 行内元素之间产生的间隙
- 【C++】atomic简介
- 一脸懵逼学习Hadoop-HA机制(以及HA机制的配置文件,测试)
- windows server 2012 安装 VC++ 安装失败0x80240017解决方法
- 声明:博客内容不得用于商业用途,仅做学习交流。
- Linux Ubuntu 鼠标变为十字架锁死解决办法
- OpenGL实现图片边缘暗角效果(1)
- SHOI 2002 百事世界杯之旅 题解
- HTTPS在微信中打开空白解决方法
- 各省规模以上工业企业新产品销售收入(2006-2017年)
热门文章
- linux shell命令分布执行,Linux学习笔记:bash特性之多命令执行,shell脚本
- 华为交换机ipv6默认路由配置_静态路由和默认路由的配置
- mysql 多张表公用一个序列_Mysql--序列3--分库分表策略
- git拉取代码如何解决冲突_开源项目 git pull 代码冲突的解决方式?
- 9宫格 java_java 拼接头像9宫格
- hikaridatasource 加密后登陆不上_渗透测试 | 突破前端JS加密限制
- mysql时间格式函数_MySQL时间格式函数
- python 字符串 数字_Python基础教程:数字、字符串
- 【转】python-word2vec模块使用详解
- 拿下了一个美女图片网站!