zoukankan      html  css  js  c++  java
  • UNION(并集)集合运算

    在集合论中,两个集合(记为集合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 为检查重复行而带来的额外开销。

  • 相关阅读:
    zabbix linux 客户端编译安装
    yum安装grafana
    zabbix 安装和配置
    安装PHP
    wrk压力测试
    新加坡地图
    shell中去除变量去除所有空格或者去除变量首尾空格的常用几种方法
    新鲜出炉!春招-面试-阿里钉钉、头条广告,美团面经分享,看我如何拿下offer!
    面试阿里,字节跳动90%会被问到的Java异常面试题集,史上最全系列!
    最新出炉,字节跳动一二三面面经,看我如何一步一步攻克面试官?
  • 原文地址:https://www.cnblogs.com/zhangdx/p/3731201.html
Copyright © 2011-2022 走看看