工作中,看到大佬写的一段SQL,查询了五个表中的数据,最后求某个收入的总和,其中使用了Union All,因此在这里记录一下我从中学到的东西

先上语法

Union:   [ Select语句1 ]

Union

        [ Select语句2 ]

Union

...

Union All:   [ Select语句1 ]

Union All

[ Select语句2 ]

Union All

...

Union 和 Union All  都是用来将多个SELECT语句查询出的结果集进行合并,得到的是一个临时表,要对这个临时表进行操作,需要起别名

要注意的是,使用这两个操作符的时候,多个查询语句查出来的结果集应具有相同的列数,列的顺序也必须相同(这里,如果数据库表中的字段名不一致,可以对列起别名,使要合并的结果集的列名一致),同时列的数据类型也要相同

Union是讲SELECT语句查出来的结果集合并,并且将其中重复的值去除掉,只显示不同的值,如果要显示重复的值,就需要使用Union All

也就是说,Union会对查询出来的结果集进行去除重复值的操作,并且会按照字段的顺序进行排序,而Union All会将结果集直接全部显示且不会进行排序,这也就导致了Union All 的效率要比Union 好很多

使用Union 操作符时,子句中不可以使用order by,使用后执行会报错,如果逻辑上必须对查询语句进行排序,那么可以在SELECT查询语句中使用子查询来进行order by排序

所以,一般不要求去重的时候,合并结果集选择Union All 比较好

2019-02-12  修改

之前写到使用Union操作符时,子句不可以使用order by,这是不严谨的,应该是Union操作符之前的子句不可以使用order by

order by子句在Union操作符之后,可以正常查出数据,并且是按照order by的排序方式展示数据

SQL中Union和Union All的更多相关文章

  1. LINQ to SQL 中 Concat、Union、Intersect、Except 方法的使用

    Ø  前言 LINQ to SQL 中需要对两个或多个数据集进行操作,比如:合并.取交集等,主要使用下面四个方法,这四个方法都是 System.Linq.IQueryable<out T> ...

  2. SQL中intersect、union、minus和except 运算符

    1.intersect运算符intersect运算符通过只包括 TABLE1 和 TABLE2 中都有的行并消除所有重复行而派生出一个结果表.当 ALL 随 INTERSECT 一起使用时 (inte ...

  3. Sql中的并(UNION)、交(INTERSECT)、差(minus)、除去(EXCEPT)详解

    UNION 查询选修了180101号或180102号课程或二者都选修了的学生学号.课程号和成绩. (SELECT  学号, 课程号, 成绩 FROM   学习 WHERE   课程号='180101' ...

  4. Sql Server的艺术(五) SQL UNION与UNION JOIN运算符

    学习本节所用表: CREATE TABLE TEACHER ( ID INT IDENTITY (,) PRIMARY KEY , --主键,自增长 TNO INT NOT NULL, --教工号 T ...

  5. SQL中union运算操作的理解

    在SQL中,对于并运算,可以使用union关键字. 例如: SELECT column_name(s) FROM table_name1 UNION SELECT column_name(s) FRO ...

  6. Sql中的union和union all的讲解

    SQL UNION 和 UNION ALL操作符 UNION 操作符用于合并两个或多个 SELECT 语句的结果集. 请注意,UNION 内部的 SELECT 语句必须拥有相同数量的列.列也必须拥有相 ...

  7. 【转载】SQL语句中Union和Union All的区别

    在使用到SQL语句进行数据库查询的过程中,如果需要求两个数据集合的并集,一般会使用到联合查询关键字Union或者Union All,其实Union和Union All两者的使用有一定差别,查出来的数据 ...

  8. SQL中Union和UnionAll的使用

    SQL中Union和UnionAll的使用 1.建立一个Student表 ,如下: 2.建立一个Teacher表,如下: 3.使用Union,将去重并组合表,效果: 4.使用Union All,不去重 ...

  9. sql中Union和union all的使用

    该文转载自:http://www.cnblogs.com/chaobaojun/archive/2009/12/24/1631508.html 在MS-SQL如果将两个或更多查询的结果组合为单个结果集 ...

随机推荐

  1. Java final类&所有构造方法均为private的类(类型说明符&访问控制符)

    1. final是类型说明符,表示关闭继承,即final类不能有子类: 但final类可能可以在类外创建对象(即final类的构造方法可以不是private型): 在同一包中时,可以在任何另外一个类中 ...

  2. mysql开启远程登陆(修改数据表和授权两种方法)

    一.确认防火墙没有阻止3306端口(一般服务器默认会屏蔽掉) windows防火墙例外设置方法 控制面板(右上角选择查看方式为大图标)---防火墙---高级设置---高级设置---出站规则---最右边 ...

  3. 考研计算机复试(C语言复试笔试题)(精华题选)

    1.以下选择中,正确的赋值语句是(C) A.a=1,b=2 B.j++ C.a=b=5; D.y=(int)x 解析:选项A.B.D都无分号 变量 = 表达式;//赋值语句是一定带分号的 int a= ...

  4. 20190219备份 java spring boot 学习链接(日/英)

    Building web applications with Spring Boot and Kotlin https://www.slideshare.net/masuda220/spring-82 ...

  5. python中filter、map、reduce的区别

    python中有一些非常有趣的函数,今天也来总结一下,不过该类的网上资料也相当多,也没多少干货,只是习惯性将一些容易遗忘的功能进行整理. lambda 为关键字.filter,map,reduce为内 ...

  6. asp调用短信接口实现用户注册

    前几天做一个asp语言开发的网站需要实现用户注册短信验证功能,就研究了一下如何实现,简单给大家分享下调用过程. 首先需要找到一个第三方短信接口,当时用的是动力思维乐信的短信接口. 首先需要先注册个动力 ...

  7. callback理解

    ex:       var fn1 = function(callback){             //do something             callback && c ...

  8. spring Ioc容器之使用XML配置Bean

    1.项目截图 2.创建xml文件 3.打印机接口 package com.example.demo.computerTest; public interface Printer { void init ...

  9. ORACLE视图简单创建和使用

    1.创建 create view v (pdate,goodsId,productionId,qty)列名 as select p.pdate,p.goodsId,p.productionId,sum ...

  10. 马凯军201771010116《面向对象与程序设计Java》第十三周学习总结

    实验十三  图形界面事件处理技术 实验时间 2018-11-22 理论知识与学习部分 事件处理基础  事件源(event source):能够产生事件的对象都可 以成为事件源,如文本框.按钮等.一个事 ...