Union由于要进行反复值扫描,所以效率低。假设合并没有刻意要删除反复行,那么就使用Union All

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

假设我们须要将两个select语句的结果作为一个总体显示出来,我们就须要用到union或者union allkeyword。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 allkeyword须要注意的问题是:



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;

mysql union和union all 的差别以及使用的更多相关文章

  1. 【转】Mysql联合查询union和union all的使用介绍

    Mysql的联合查询命令UNION和UNION ALL,总结了使用语法和注意事项,以及学习例子和项目例子,需要的朋友可以参考下 一.UNION和UNION ALL的作用和语法 UNION 用于合... ...

  2. mysql中union与union all的区别

    当查询表结构完全相同的多张表的数据时: 1.当查询条件完全相同且不包括主键,此时用union查询会过滤掉查询出的重复的记录,及漏查记录:使用union all进行查询,则会查出所有的符合条件的记录,保 ...

  3. MySQL UNION 与 UNION ALL 语法与用法

    MySQL UNION 语法 MySQL UNION 用于把来自多个 SELECT 语句的结果组合到一个结果集合中.语法为: SELECT column,... FROM table1 UNION [ ...

  4. MySQL中UNION和UNION ALL的使用

    在数据库中,UNION和UNION ALL关键字都是将两个结果集合并为一个,但这两者从使用和效率上来说都有所不同. MySQL中的UNION UNION在进行表链接后会筛选掉重复的记录,所以在表链接后 ...

  5. MySQL全连接(Full Join)实现,union和union all用法

    MySQL本身不支持你所说的full join(全连接),但可以通过union来实现 ,下面是一个简单测试,可以看看: mysql> CREATE TABLE a(id int,name cha ...

  6. Union和Union All的差别

    如果我们有一个表Student,包含下面字段与数据: drop table student; create table student ( id int primary key, name nvarc ...

  7. mysql union 与 union all 语法及用法

    1.mysql   union  语法 mysql   union 用于把来自多个select  语句的结果组合到一个结果集合中.语法为: select  column,......from tabl ...

  8. 【连接查询】mySql多表连接查询与union与union all用法

    1.准备两个表 表a: 结构: mysql> desc a; +-------+-------------+------+-----+---------+-------+ | Field | T ...

  9. MySQL 常用语法 之 UNION与UNION ALL

    下面讲一下mySql中的union和union all 的功能以及区别 A union B 是将表A的数据和表B的数据连接成一张表,前提是查询的两张表的列数一定要一样否则出错. A union all ...

随机推荐

  1. 【BZOJ 2288】 2288: 【POJ Challenge】生日礼物 (贪心+优先队列+双向链表)

    2288: [POJ Challenge]生日礼物 Description ftiasch 18岁生日的时候,lqp18_31给她看了一个神奇的序列 A1, A2, ..., AN. 她被允许选择不超 ...

  2. 最优贸易 NOIP 2009 提高组 第三题

    题目描述 C 国有 n 个大城市和 m 条道路,每条道路连接这 n 个城市中的某两个城市.任意两个 城市之间最多只有一条道路直接相连.这 m 条道路中有一部分为单向通行的道路,一部分 为双向通行的道路 ...

  3. 【20181019T3】比特战争【最小生成树思想】

    题面 [错解] Hmm不可做啊 要不按b排个序? 然后并查集瞎搞,刷刷刷过了样例 然后大样例大了几万倍 出了组小数据,Successful Hack 弃疗 水过10分 [正解] 用占领的边将顶点连起来 ...

  4. 【树形dp】The more, The Better

    [HDU1561]The more, The Better Time Limit: 6000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K ...

  5. 【动态规划】【记忆化搜索】hdu5965 扫雷

    f(i,j,k)表示第i行,放的雷的状态为j{0表示不放,1表示往上放,2表示往下放,3表示上下都放},剩余还有k(0<=k<=2)个要放的方案数. 先给出我这个sb写的错误代码,死都没调 ...

  6. Problem A: 插入一个数到数列中

    #include<stdio.h> int main() { ]={,,,,,,,,},i,k; scanf("%d",&n); a[]=n; ;i<=; ...

  7. Problem B: 零起点学算法92——元素前移1位

    #include<stdio.h> int main() { ],b[]; while(scanf("%d",&n)!=EOF) { ;i<n;i++) ...

  8. mysql join优化

    http://www.jb51.net/article/50427.htm 七.性能优化1.显示(explicit) inner join VS 隐式(implicit) inner join 如: ...

  9. 关于DeploymentConfig的思考

    为什么是deploymentconfig而不是Kubernetes的deployment 在new-app的时候openshift直接创建了一个deploymentconfig并部署成rc,开始并不理 ...

  10. gmock学习01---Linux配置gmock

    本文目的 本文主要介绍gmock 1.6.0版本在Linux上如何部署和使用. gmock是做什么的? 使用C++手动编写mock对象将会是一件十分耗时,易于出错,枯燥乏味的事情.gmock提供一整套 ...