MySql連接——內連接、外連接(左連接、右連接、全連接)


1. 內聯接
    使用比較運算符根據每個表共有的列的值匹配兩個表中的行
2. 外聯接
    1)左聯接 left join /left outer join
        右表無匹配的時候,行為null,左表的行保留
    2)右聯接 right join /right outer join
        左表無匹配的時候,行為null,右表的行保留
    3) 全聯接 full join
         左表行、右表的行全保留
  3. 示例
    -------------------------------------------------
  a表     id   name     b表     id   job   parent_id   
              1   張3                   1     23     1   
              2   李四                 2     34     2   
              3   王武                 3     34     4       
  a.id同parent_id   存在關系   
--------------------------------------------------    
 1) 內連接   
  select   a.*,b.*   from   a   inner   join   b     on   a.id=b.parent_id       
  結果是     
  1   張3                   1     23     1   
  2   李四                  2     34     2   

  2)左連接   
  select   a.*,b.*   from   a   left   join   b     on   a.id=b.parent_id       
  結果是     
  1   張3                   1     23     1   
  2   李四                  2     34     2   
  3   王武                  null   

 3) 右連接   
  select   a.*,b.*   from   a   right   join   b     on   a.id=b.parent_id       
  結果是     
  1   張3                   1     23     1   
  2   李四                  2     34     2   
  null                       3     34     4   

 4) 完全連接    
  select   a.*,b.*   from   a   full   join   b     on   a.id=b.parent_id   
  結果是     
  1   張3                  1     23     1   
  2   李四                 2     34     2   
  null                   3     34     4   
  3   王武                 null
 
4. 推薦:ON只進行連接操作,WHERE只過濾中間表的記錄
 
    SELECT T1.C1,T2.CX,T3.CY
    FROM TAB1 T1
           INNER JOIN TAB2 T2 ON (T1.C1=T2.C2)
           INNER JOIN TAB3 T3 ON (T1.C1=T2.C3)
           LEFT OUTER JOIN TAB4 ON(T2.C2=T3.C3);
    WHERE T1.X >T3.Y;
    上面這個SQL查詢是多表連接的一個示范。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM