分享

union all和union的用法

 intruder 2006-08-30

union all和union的用法

关键词union    all    union                                          

union all和union都 可以把两张表连起来,union  会排除重复的记录  union  all  不会排除重复的记录 。不同于join,join为笛卡儿积。


tab1  
       字段  
       aID  
       bID  
 
tab2  
       字段  
       aID  
       bID  
tab1中有记录:  
aID    bID  
as1    19  
as2    19  
as3    23  
as4    45  
tab2中有记录:  
aID    bID  
as2    19  
as3    19  
as4    19  
现在需要查找出两张表中bID相等的且bID=19的记录,应该是5条记录  
我用的方法是:  
方法1:select  tab1.aID,tab2.aID  from  tab1,tab2  where  tab1.bID=tab2.bID  and  tab2.bID=19  
方法2:select  tab1.aID,tab2.aID  from  tab1  join  tab2  on  tab1.bID=tab2.bID  where  tab1.bID=19  
上面两中方法选出的记录都是6条,为什么出这样的问题,应该怎么做呢?  
---------------------------------------------------------------  
 
select  *  form  tab1  where  bID=19  
union  all    
select  *  form  tab2  where  bID=19  
 
 
---------------------------------------------------------------  
 
create  table  tab1  
       (aID  char(10),  
       bID  char(10))  
go  
 
insert  into  tab1(aid,bid)  values(‘as1‘,‘19‘)  
insert  tab1  values(‘as2‘,‘19‘)  
insert  tab1  values(‘as3‘,‘38‘)  
insert  tab1  values(‘as4‘,‘45‘)  
go  
create  table  tab2  
       (aID  char(10),  
       bID  char(10))  
go  
go  
insert  tab2  values(‘as2‘,‘19‘)  
insert  tab2  values(‘as3‘,‘19‘)  
insert  tab2  values(‘as4‘,‘19‘)  
go  
select  *  from  tab1  
 
select  *  from  tab1  where  tab1.bid=‘19‘union  all  select  *  from  tab2    where  tab2.bid=‘19‘  
 
 
斑竹加的话:  
1、join  产生的是笛卡尔积。  
2、union  会排除重复的记录  
3、union  all  不会排除重复的记录记录

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多