select语句中的join

join的功能就是把两表连接起来,然后用双方关联上的字段
 
有4种join
 
t1:         id        a        b
             1         2        3
             2         5        5
             3         5        7
 
t2:         id        c        t1_id
             1         6        2
             2         7        4
             3         8        1
 
我们可以先看看两个表通过t1_id连起来会是什么样子
 
t1.id      a        b         t2.id       c       t1_id
1          2        3          3           8        1
2          5        5          1           6        2
3          5        7        
                                 2           7        4
连起来就这个个样子,我们看到,是有不少空的。空的表示没匹配上。
 
 
1.inner join:严格匹配,只返回不空的行。显然,我们的的inner合成就是
t1.id      a        b         t2.id       c       t1_id
1          2        3          3           8        1
2          5        5          1           6        2
 
2.left join:以左表为主,如果右表空就空吧,把左表保留。所以合成表就这样:
t1.id      a        b         t2.id       c       t1_id
1          2        3          3           8        1
2          5        5          1           6        2
3          5        7          x           x        x
 
3.right join:以右表为主,跟上面一样
t1.id      a        b         t2.id       c       t1_id
1          2        3          3           8        1
2          5        5          1           6        2
X          x        x          2           7        4
 
4.full join:松散匹配,不用多说了,松散吗,没限制
t1.id      a        b         t2.id       c       t1_id
1          2        3          3           8        1
2          5        5          1           6        2
3          5        7        
                                 2           7        4
 
匹配之后就可以用双方的字段了。
具体sql语句:
 
 select t1.id,t2.c,t2.id from t1            (这里就t1为主,也就是说t1成了左表)
 inner(left,right,full) join t2 on t1.id = t2.t1_id          (on后面写连接条件)

posted on 2013-03-13 13:51  bgwan  阅读(680)  评论(0编辑  收藏  举报

导航