basten's profile这里的黎明静悄悄PhotosBlogListsMore Tools Help

Blog


    6/21/2006

    MYSQL中的左连接查询和右连接查询

    以前在学校里上数据库的时候一直以为这个查询很复杂,加上经常偷懒,所以也没去研究.今天突然用到,去google搜索了一下,一目了然.诶,很多东西表面上看起来,或则听上去非常复杂,其实你真正去做过以后才知道,如此而已,just so so ,只不过一开始在想当然罢了.实践才是硬道理呀.

     

     

    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 

     
     
     
    ++++++++++++++++++++++++++++++++++++++
     
     
     
    这样的。
       table1            table2
       id,sex1           id   sex2
       a     1          a       4
       b     0
    select id,sex1,sex2 from table1 left join table2 on table1.id=table2.id
      则,
      id  sex1  sex2
      a     1    4
      b     0    null
    也就是说left join 则连接左边表中所有记录都会出现,如果根据连接条件在table2中找不到相关记录,则显示为null
      right join 则显示右边表中的全部记录。
      inner join 则只有符合条件的记录才会出现在结果集中