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 为检查重复行而带来的额外开销。

  • 相关阅读:
    提升应用崩溃时的用户体验——去掉烦人的“很抱歉”提示框
    Activity与DialogFragment交互的方法
    取之有道——巧用Root权限 启动其他APP中的Activity
    巧用Handler获取View控件信息
    关于遍历javascript 中的json串浏览器输出的结果不统一的情况
    PHP usort 函数底层排序
    IO多路复用小故事
    不知道写的是啥
    GC算法-增量式垃圾回收
    GC算法-分代垃圾回收
  • 原文地址:https://www.cnblogs.com/zhangdx/p/3731201.html
Copyright © 2011-2022 走看看