zoukankan      html  css  js  c++  java
  • 使用 UNION 运算符组合多个结果

     

    使用 UNION 运算符组合多个结果
    UNION 运算符使您得以将两个或多个 SELECT 语句的结果组合成一个结果集。使用 UNION 组合的结果集都必须具有相同的结构。而且它们的列

    数必须相同,并且相应的结果集列的数据类型必须兼容。有关更多信息,请参见 UNION 运算符使用指南。

    UNION 的指定方式如下:

    select_statement UNION [ALL] select_statement

    例如,Table1 和 Table2 具有相同的两列结构。

    Table1     Table2  
    ColumnA ColumnB   ColumnC ColumnD
    char(4) int   char(4) int
    ------- ---   ------- ---
    abc 1   ghi 3
    def 2   jkl 4
    ghi 3   mno 5



    下面的查询在这两个表之间创建 UNION 运算:

    SELECT * FROM Table1
    UNION
    SELECT * FROM Table2

    下面是结果集:

    ColumnA  ColumnB
    -------  --------
    abc      1
    def      2
    ghi      3
    jkl      4
    mno      5

    UNION 的结果集列名与 UNION 运算符中第一个 SELECT 语句的结果集中的列名相同。另一个 SELECT 语句的结果集列名将被忽略。

    默认情况下,UNION 运算符从结果集中删除重复的行。如果使用 ALL 关键字,那么结果中将包含所有行并且将不删除重复的行。

    UNION 运算的准确结果取决于安装过程中选择的排序规则和 ORDER BY 子句。有关不同排序规则的效果的更多信息,请参见 SQL Server 排序

    规则基础知识。

    Transact-SQL 语句中可以出现任意数目的 UNION 运算符,例如:

    SELECT * FROM TableA
    UNION
    SELECT * FROM TableB
    UNION
    SELECT * FROM TableC
    UNION
    SELECT * FROM TableD

    默认情况下,Microsoft® SQL Server™ 2000 从左到右对包含 UNION 运算符的语句进行取值。使用圆括号指定求值的顺序。例如,以下语句并

    不等价:

    /* First statement. */
    SELECT * FROM TableA
    UNION ALL
    (   SELECT * FROM TableB
       UNION
       SELECT * FROM TableC
    )
    GO

    /* Second statement. */
    (SELECT * FROM TableA
     UNION ALL
     SELECT * FROM TableB
    )
    UNION
    SELECT * FROM TableC)
    GO

    在第一个语句中,将消除 TableB 和 TableC 之间的联合中的重复行。而在该集与 TableA 之间的并集中,不消除重复行。在第二个语句中,

    TableA 和 TableB 之间的联合中包含重复行,但在随后与 TableC 的联合中将消除。ALL 关键字对此表达式的最终结果没有影响。

    如果使用 UNION 运算符,那么单独的 SELECT 语句不能包含其自己的 ORDER BY 或 COMPUTE 子句。只能在最后一个 SELECT 语句的后面使用

    一个 ORDER BY 或 COMPUTE 子句;该子句适用于最终的组合结果集。GROUP BY 和 HAVING 子句只能在单独的 SELECT 语句中指定。

  • 相关阅读:
    第二次冲刺每日站立会议10(完结)
    第二次冲刺每日站立会议09
    第二次冲刺每日站立会议08
    找bug
    测试计划
    博客园的意见与建议
    第二次每日站立会议07
    个人总结
    学习进度条(第十六周)
    梦断代码阅读笔记03
  • 原文地址:https://www.cnblogs.com/hnxxcxg/p/2941013.html
Copyright © 2011-2022 走看看