left join 和 left outer join 的区别

http://www.cnblogs.com/cy163/archive/2008/10/16/1312920.html


通俗的讲:  
  A   
left   join   B   的连接的记录数与A表的记录数同  
  A   
right   join   B   的连接的记录数与B表的记录数同    
  A   
left   join   B   等价B   right   join   A  
   
   
  
table   A:  
Field_K,   Field_A  
  1                       a  
  
3                       b  
  
4                       c  
   
  
table   B:  
  Field_K,   Field_B  
  
1                       x  
  
2                       y  
  
4                       z  
   
  
select   a.Field_K,   a.Field_A,   b.Field_K,   b.Field_B  
  
from   a   left   join   b   on   a.Field_K=b.Field_K  
   
  Field_K         Field_A         Field_K         Field_B          
  
----------   ----------   ----------   ----------    
  1                     a                     1                     x                    
  
3                     b                     NULL               NULL  
  
4                     c                     4                     z                    
   
  
select   a.Field_K,   a.Field_A,   b.Field_K,   b.Field_B  
  
from   a   right   join   b   on   a.Field_K=b.Field_K  
   
  Field_K         Field_A         Field_K         Field_B          
  
----------   ----------   ----------   ----------    
  1                     a                     1                     x                    
  
NULL               NULL               2                     y                    
  
4                     c                     4                     z       --

举个例子:  
  假设a表和b表的数据是这样的。  
  a                         b    
  id     name  id     stock   
  
1   a              1           15   
  
2          b              2           50   
  
3          c                  
   
  
select     *     from    a    inner     join    b    on    a.id = b.id  
  这个语法是连接查询中的内连接,它产生的结果是  
  两个表相匹配的记录出现在结果列表中。  
  根据上面的表,出现的结果是这样的  
  a.id     name     b.id     stock  
  
1        a              1           15   
  
2              b              2           50   
  
-- --------------------------  
   select     *     from    a,b    where    a.id = b.id  
  这个语法是内连接的另外一种写法,其执行结果与inner   
join    一样  
   
  
-- ------------------------------    
   
  
select     *     from    a    left / right     join    b    on    a.id = b.id  
  这个是外连接语法中的左外连接或右外连接  
  如果是左外连接的话,它将显示a表的所有记录,  
  
select    a. * ,b. *     from    a    left     join    b    on    a.id = b.id  
  查询的结果是这样的:  
  a.id     name     b.id     stock  
  
1          a          1               15   
  
2                b          2               50   
  
3                c        null           null    
  
-- ------------------------------------------  
  如果是右外连接的话,它将显示b表的所有记录,  
  
select    a. * ,b. *     from    a    right     join    b    on    a.id = b.id  
  查询的结果是这样的:  
  a.id     name     b.id     stock  
  
1          a          1               15   
  
2                b          2               50    


--

select    a. * ,b. *     from    a    left     join    b    on    a.k    =    b.k    
  
select    a. * ,b. *     from    a    left     outer     join    b    on    a.k    = b.k  
  
-- --------上面两种一样left   join是left   outer   join的简写  
   select    a. * ,b. *     from    a    left     inner     join    b    on    a.k    =    b.k    
  没有这种写法,错误的语句.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值