Oracle中Union与Union All的区别(适用多个数据库)

来源:asp之家 时间:2012-07-21 15:13:27 

Union 与 Union ALL 的作用都是合并 SELECT 的查询结果集,那么它们有什么不同呢?
Union 将查询到的结果集合并后进行重查,将其中相同的行去除。缺点:效率低;
而Union ALL 则只是合并查询的结果集,并不重新查询,效率高,但是可能会出现冗余数据。

我们举个例子来说明一下:

比如数据库中有两张表 tab1 和 tab2。

tab1 中的数据有:

小王小张

tab2 中的数据有:

小王小李

执行查询:


 代码如下:

SELECT * FROM tab1 UNION SELECT * FROM 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;

标签:Union,Union_All
0
投稿

猜你喜欢

  • Django Celery异步任务队列的实现

    2023-09-28 19:24:53
  • Python pymongo模块常用操作分析

    2021-06-13 11:01:05
  • python神经网络MobileNet模型的复现详解

    2022-09-24 19:54:14
  • 详解MySQL中的SQRT函数的使用方法

    2024-01-28 03:59:32
  • python超详细实现完整学生成绩管理系统

    2022-08-25 08:59:08
  • python-httpx的具体使用

    2023-08-12 00:25:53
  • Python的Bottle框架中返回静态文件和JSON对象的方法

    2023-11-07 20:14:41
  • Python数据处理的三个实用技巧分享

    2023-07-01 23:37:13
  • Python实现邮件发送功能的示例详解

    2022-08-18 13:15:43
  • Python实现轻松切割MP3文件

    2023-09-23 21:40:32
  • Python实现快速保存微信公众号文章中的图片

    2021-02-18 23:03:25
  • Python方差特征过滤的实例分析

    2021-08-11 01:12:56
  • python解析xml简单示例

    2022-10-06 13:37:49
  • CentOS7.2虚拟机上安装MySQL 5.6.32的教程

    2024-01-23 07:30:59
  • MySQL表锁、行锁、排它锁及共享锁的使用详解

    2024-01-22 09:30:47
  • win7下配置GO语言环境 + eclipse配置GO开发

    2024-02-16 16:02:35
  • Python程序设计入门(1)基本语法简介

    2023-09-12 05:03:31
  • Python中常用的8种字符串操作方法

    2023-05-28 09:44:38
  • 一个ASPJPEG组件的asp类 CLASS

    2008-03-11 12:22:00
  • MySQL中一些鲜为人知的排序方式

    2024-01-18 03:18:12
  • asp之家 网络编程 m.aspxhome.com