在集合论中,两个集合(记为集合A和B)的并集是一个包含集合A和B中所有元素的集合。换句话说,如果一个元素属于任何一个输入集合,那么它也属于结果集。

在T-SQL中,UNION 集合运算可以将两个输入查询的结果集组合成一个结果集。如果一个行在任何一个输入集合中出现,它也会在UNION运算的结果中出现。T-SQL 支持在UNION集合运算中使用UNION ALL 和UNION(隐含DISTINCT,DISTINCT不能显示指定)选项。

UNION ALL 集合运算

对于作为运算的输入查询而生成的多集,UNION ALL 集合运算返回在输入的多集中出现的所有行,它实际上不会对行进行比较,也不会删除重复行。假设查询Query1返回m行,查询Query2返回n行,则Query1 UNION ALL Query2 返回(m+n)行。

SELECT c FROM a

UNION ALL

SELECT c FROm b

注意:因为UNION ALL 不会删除重复行,所以它的结果是多集,而不是真正的集合。相同的行在结果中可能出现多次。

UNION DISTINCT 集合运算

从逻辑处理过程来看,UNION(隐含 DISTINCT)集合运算通过删除重复记录,可以把两个输入的多集转变成一个集合,这个返回的集合中包含两个输入集中的所有行。

注意:如果两个输入集中包含相同的行,则该行在结果中只出现一次;换句话说,运算结果是一个真正的集合,而不是多集。

从物理处理过程来看,SQL Server 不一定必须先删除输入多集中的重复行,再进行集合运算。相反,它可以先把两个多集组合在一起,然后再删除重复行。

那么,什么时候应该使用 UNION ALL ,什么时候应该使用 UNION呢?如果在集合运算合并两个输入集以后可能存在重复行,但要返回互不相同的行,则使用 UNION 。如果在合并两个输入集以后不可能会出现重复行,那么这时UNION和UNION ALL 在逻辑上是等价的。不过,对于这种情况,建议使用UNION ALL,这样可避免SQL Server 为检查重复行而带来的额外开销。

UNION(并集)集合运算的更多相关文章

  1. 集合运算—union(并集)、intersect(交集)和except(差集)

    一.集合运算的基本格式是: 集合查询1 <集合运算> 集合查询2 [order by ...] 二.集合运算符是对两个集合操作的,两个集合必须具有相同的列数,列具有相同的数据类型(至少能隐 ...

  2. 详解SQL集合运算

    以前总是追求新东西,发现基础才是最重要的,今年主要的目标是精通SQL查询和SQL性能优化. 本系列[T-SQL基础]主要是针对T-SQL基础的总结. [T-SQL基础]01.单表查询-几道sql查询题 ...

  3. UNION并集运算

    在集合论中,两个集合(集合A和集合B)的并集是一个包含集合A和B中所有元素的集合.换句话说,如果一个元素属于任何一个输入集合,那么它也属于结果集.如图所示.

  4. SQL集合运算 差集 并集 交

    SQL-3标准中提供了三种对检索结果进行集合运算的命令:并集UNION:交集INTERSECT:差集EXCEPT(在Oracle中叫做 MINUS).在有些数据库中对此的支持不够充分,如MySql中只 ...

  5. SQL Fundamentals || 多表查询(内连接,外连接(LEFT|RIGHT|FULL OUTER JOIN),自身关联,ON,USING,集合运算UNION)

    SQL Fundamentals || Oracle SQL语言 一.多表查询基本语法 在进行多表连接查询的时候,由于数据库内部的处理机制,会产生一些“无用”的数据,而这些数据就称为笛卡尔积. 多表查 ...

  6. 集合运算(UNION)

    表的加法 集合运算:就是满足统一规则的记录进行的加减等四则运算. 通过集合运算可以得到两张表中记录的集合或者公共记录的集合,又或者其中某张表中记录的集合. 集合运算符:用来进行集合的运算符. UNIO ...

  7. 【oracle】-集合运算:UNION,UNION ALL...

    在Oracle中提供了三种类型的集合操作: 并(UNION).交(INTERSECT).差(MINUS) UNION:求并,重复记录只显示一次. UNION ALL:求并集,显示所有记录信息. INT ...

  8. SQL Server中的集合运算: UNION, EXCEPT和INTERSECT

    SQL Server中的集合运算包括UNION(合并),EXCEPT(差集)和INTERSECT(相交)三种. 集合运算的基本使用 1.UNION(合并两个查询结果集,隐式DINSTINCT,删除重复 ...

  9. Oracle学习之集合运算

    一.集合运算操作符  UNION:(并集)返回两个集合去掉重复值的所有的记录  UNION ALL:(并集)返回两个集合去掉重复值的所有的记录 INTERSECT:(交集)返回两个集合的所有记录,重复 ...

随机推荐

  1. Mysql基本操作、C++Mysql简单应用、PythonMysql简单应用

    MySql基本操作 -- 当指定名称的数据库不存在时创建它并且指定使用的字符集和排序方式 CREATE DATABASE IF NOT EXISTS db_name CHARACTER SET UTF ...

  2. cf536d——优先队列的运用

    题目 题目:Lunar New Year and a Wander 题目大意:给定一个n个顶点(编号1~n).m条边的图,求从顶点1出发的字典序最小的路径(途径的边可重复). 思路 使用一个优先队列就 ...

  3. cron - 定期执行指定命令的守护程序 (Vixie Cron)

    总览 cron 描述 Cron 应该由 /etc/rc 或者 /etc/rc.local 启动(译注:有很多发行版与此不同的,如 RedHat6.x 使用 /etc/rc.d/init.d/crond ...

  4. winpcap编程设置过滤器之指定获取某个网站的数据

    下面,我将以 乱世隋唐页游 为例,通过编码获取这里面的数据. 游戏图: 我是乱世隋唐的网址是:www.917st.com 这个是官网网址的服务器地址.  42.62.0.14 我玩的游戏服是84区.网 ...

  5. 05CSS链接

    CSS链接 链接的四种状态: •  a:link - 普通的.未被访问的链接 •  a:visited - 用户已访问的链接 •  a:hover - 鼠标指针位于链接的上方 •  a:active ...

  6. vue解决IOS10低版本白屏问题

    一.方案一 在build文件的webpack.prod.conf.js文件添加以下代码 new UglifyJsPlugin({ uglifyOptions: { compress: { warnin ...

  7. 模板—trie图

    做了某题之后发现trie的AC自动机太垃圾了,动不动就TLE,然后我就去学了trie图. #include<iostream> #include<cstdio> using n ...

  8. 通过反编译小程序来学习前端:wxappUnpacker

    小程序开发时,会有4种文件:.wxss  .json  .wxs  .wxml. 正式上传到腾讯时,目录会被打包,使用时再发放给客户端. 这个文件包后缀是 .wxapkg.只要手机用过这个小程序,文件 ...

  9. 详细了解为什么支持Postman Chrome应用程序已被弃用?

    本地postman chrome插件确实也无法正常使用,只有Postman官方自己的软件应用程序可以使用.笔者多少追溯终于知道原因,并紧急上线了不同操作系统版本的Postman应用程序. 为什么近期P ...

  10. 高阶函数 map,reduce, filter的用法

    1. map 用法 def fun_C(x): """求平方""" return x ** 2 result = map(fun_C, my ...