设为首页 | 加入收藏 | 
两个记录集的合并操作,UNION运算
作者:叶随风 时间:01月17日 来源:http://www.popasp.com 浏览次数:【字号: 】 

下面的查询在这两个表之间创建   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   语句中指定。

 

 * 以上任何内容或信息侵犯了你的利益,请及时联系!
泡泡搜索
最新文章
热点文章
精彩推荐
 - TOP