SQL Server中的union关键字功能介绍

UNION 运算符是将两个或更多查询的结果组合为单个结果集, 该结果集包含联合查询中的所有查询的全部行。这与使用联接组合两个表中的列不同。
         使用 UNION 组合查询的结果集有两个最基本的规则:

         1、所有查询中的列数和列的顺序必须相同。

         2、数据类型必须兼容

         a、UNION的结果集列名与第一个select语句中的结果集中的列名相同,其他select语句的结果集列名被忽略

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

         c、sql是从左到右对包含UNION 运算符的语句进行取值,使用括号可以改变求值顺序

         --例如:

                 select * from tablea

                 union all

                 (select * from tableb

                  union all

                  select * from tablec)

         这样就可以先对tableb和tablec合并,再合并tablea

         d、如果要将合并后的结果集保存到一个新数据表中,那么into语句必须加入到第一条select中

         e、只可以在最后一条select语句中使用 order by 和 compute 子句,这样影响到最终合并结果的排序和计数汇总

         f、group by 和 having 子句可以在单独一个select查询中使用,它们不影响最终结果

         --例如:

        select name as 姓名,class as 班级,grade as 年级

              into #students

              from stud87

              union all

         select * from stud88

              union all

         select * from stud89

              order by 年级

         将3个班级的合并结果(按grade排序)插入到临时表 #students里面

分享我的例子:

select * from products where ID =指定ID union all (select * from products where CategoryID=指定分类 and ID<>指定ID)

目的:鼠标指向某一产品,进去的是该产品所属分类下的所有产品,并且该产品排前。

你可能感兴趣的:(SQL Server中的union关键字功能介绍)