• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase
您的位置:首页 > 数据库 >Mysql > Oracle中Union与Union All的区别(适用多个数据库)

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

作者:匿名 字体:[增加 减小] 来源:互联网 时间:2018-12-05

匿名通过本文主要向大家介绍了Union,Union_All等相关知识,希望本文的分享对您有所帮助

如果我们需要将两个select语句的结果作为一个整体显示出来,我们就需要用到union或者union all关键字。union(或称为联合)的作用是将多个结果合并在一起显示出来

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;
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • MySQL union 语法代码示例分析
  • mySQL UNION运算符的默认规则研究
  • mysql --- union
  • SQL语句的MINUS,INTERSECT和UNION ALL的解析
  • 使用union和in哪个效率高
  • MySQL组合查询中UNION排序规则示例
  • MySQL5.7中union all用法的黑科技的图文代码介绍
  • mysql merge union merge sort_union 的不同
  • MySQL中Union子句不支持order by的解决方法_MySQL
  • MySQL数据检索+查询+全文本搜索_MySQL

相关文章

  • 2017-05-11MySQL里的found_row()与row_count()的解释及用法
  • 2018-12-05怎样把坏的MySQL查询找到并杀死?
  • 2018-12-05有关Uber的文章推荐10篇
  • 2018-12-05mysql忘记密码的解决方法
  • 2018-12-05如何修改Mysql数据库的保存目录?
  • 2018-12-05关于NodeJs如何使用Mysql模块实现事务处理实例
  • 2018-12-05在CentOS 7下mysql 5.7.18 安装配置方法图文教程
  • 2018-12-05怎样写出高性能的SQL查询语句
  • 2017-05-11MySQL中批量删除指定前缀表的sql语句
  • 2018-12-05主从复制问题引起的架构优化思考

文章分类

  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase

最近更新的内容

    • 千万级记录的Discuz论坛导致MySQL CPU 100%的优化笔记
    • 数据库四个范式你又了解多少
    • SQL Select语句完整的执行顺序
    • 在Oracle中利用SQL_TRACE跟踪SQL的执行
    • 关于消除重复行的详细介绍
    • MySQL错误“Specified key was too long; max key length is 1000 bytes”的解决办法
    • 经测试最好用的mysql密码忘记的解决方法
    • mysql的索引设计原则以及常见索引的区别的简单介绍
    • 如何把ACCESS的数据导入到Mysql中
    • 数据库空间管理

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有