union union all

转载 2015年07月08日 12:59:02

Union因为要进行重复值扫描,所以效率低。如果合并没有刻意要删除重复行,那么就使用Union All

 两个要联合的SQL语句 字段个数必须一样,而且字段类型要“相容”(一致);

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

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;

相关文章推荐

Sql中的UNION ALL

  • 2009年07月17日 11:49
  • 962B
  • 下载

SQL基础(廿二)---UNION ALL

UNION与UNION ALL的区别: mysql> select * from t_employee; +----------+-------+------+---------+---------...

MySQL中子查询IN,EXISTS,ANY,ALL,SOME,UNION介绍

转自:http://www.cnblogs.com/blueoverflow/archive/2015/08/08/4712320.html 阅读目录(Content) 1.ANY关键字2.ALL关...

大数据下union all的视图分页解决方案

最近的一个项目需要用到大数据分页,问题还是比较复杂的,下面分享一些自己的解决方法,与大家一起学习。 在对于union all的视图中,如果采用传统的采用rownum分页方式的时候,如 WHERE ...

oracle union all和order by一起使用

//有时候,我们会将进过排序(order by)后的结果集与 //其他经过排序的结果集进行合并(union or union all) //比如: select * from tb where ...

Oracle SQL使用笛卡尔连接、正则表达式和层次查询、union all、unpiovt 解决多列值筛选、列转行问题

Oracle SQL使用笛卡尔连接、正则表达式和层次查询、union all、unpiovt 解决多列值筛选、列转行问题...
  • Seandba
  • Seandba
  • 2017年05月22日 20:23
  • 514

SSIS 中union all , 合并 ,合并链接的使用

解决问题描述: 主要是用于数据的合并 Union all: 是与SQL 的Union All 一样,将两个源数据合并在一起,列名要一一对应 合并:         是与SQL 的 Union 一...

msyql中子查询IN,EXISTS,ANY,ALL,UNION介绍

因为在特定情况下,一个查询语句的条件需要另一个查询语句来获取 带IN关键字的子查询 IN 运算符用于 WHERE 表达式中,以列表项的形式支持多个选择,语法如下: WHERE c...

关于union all 的优化

1:还是先看看这个差性能的sql执行计划,本来此类sql的执行计划凭经验就知道有多少集合就有多少次对表的扫描。 SQL> explain plan for 2 select count(*) ...

Hive优化---mapjoin和union all避免数据倾斜

hive优化(4)之mapjoin和union all避免数据倾斜 发生数据倾斜时,通常的现象是: 任务进度长时间维持在99%(或100%),查看任务监控页面,发现只有少量(1个或几个)r...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:union union all
举报原因:
原因补充:

(最多只允许输入30个字)