博客首页 注册 建议与交流 排行榜 加入友情链接
推荐 投诉 搜索: 帮助

CLEANER

总觉得时间不够用,原来是自己把时间分散了。
   yuechaotian.cublog.cn
关于作者  
name:yuechaotian
employment:coder
age:25
from:NEU
about me:a retardate
email:yuechaotian(at)gmail.com
msn:yuechaotian(at)hotmail.com

我的分类  




SQL - 使用 Union 的注意事项
SQL 中的 UNION 与 UNION 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 最后的返回结果集是去掉了所有的重复记录,而不区分是哪个表里的记录的。做报表,这是很容易出错的一点。

 发表于: 2008-07-02,修改于: 2008-07-02 13:56 已浏览262次,有评论0条 推荐 投诉

  网友评论

  发表评论



Copyright © 2001-2006 ChinaUnix.net All Rights Reserved

感谢所有关心和支持过ChinaUnix的朋友们
页面生成时间:0.19095

京ICP证041476号