[ 登录 ][ 注册 ] 天极传媒: 比特网 | 天极网 | IT专家网 | 52PK游戏网 | 手机天极 | IT分众 |
您现在的位置: IT专家网 > 数据库子站 > 数据库技巧

SQL Server中使用 Union 的注意事项

作者: michael,  出处:中国IT实验室, 责任编辑: 王晓晨, 
2008-07-31 00:00
   SQL Server 中的 UNION 与 UNION ALL 不同,UNION 会去掉结果集中的重复记录,而 UNION ALL 会返回合并后的全部结果集。

  SQL Server 中的 UNIONUNION ALL 不同,UNION 会去掉结果集中的重复记录,而 UNION ALL 会返回合并后的全部结果集。这个我是知道的,但今天使用 UNION 时,还是犯了一个错误:UNION 会去掉结果集中的重复记录,并且不区分这些记录是那个表里的。

  比如下面的两个结果集使用 UNION 合并,结果会是什么呢?

  -- 表 testa

  1

  1

  2

  3

  4 -- 表testb

  2

  3

  5

  6

  7

  我以为结果集会是这个:

  1

  1

  2

  3

  4

  5

  6

  7

  因为把表 testb 中与 testa 重复的记录去掉了。而实际测试结果不是这样的:

SQL> select * from testa;

  A

  ----------

  1

  2

  3

  4

  1

SQL> select * from testb;

  A

  ----------

  2

  3

  5

  6

  7 

SQL> select a from testa
  2 union
  3 select a from testb;

  A

  ----------

  1

  2

  3

  4

  5

  6

  7

  已选择7行。

  UNION 操作也会去掉表 testa 中重复的记录。总之,UNION 最后的返回结果集是去掉了所有的重复记录,而不区分是哪个表里的记录的。做报表,这是很容易出错的一点。

网友评论

笔名 
请您注意:遵守国家有关法律、法规,尊重网上道德,承担一切因您的行为而直接或间接引起的法律责任。    IT专家网友拥有管理笔名和留言的一切权利。

邮件订阅