MySql连接——内连接、外连接(左连接、右连接、全连接)

来源:互联网 发布:淘宝电动洛阳铲 编辑:程序博客网 时间:2024/05/01 21:11
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查询是多表连接的一个示范。
0 0
原创粉丝点击