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    
  沒有這種寫法,錯誤的語句.
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章