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后面写连接条件)