sql join 子句把来自两个表或者多个表的行结合起来,基于这些表的共同字段。
最常见的join类型,SQL INNER JOIN(简单的JOIN)
SQL LEFT JOIN
SQL RIGHT JOIN
SQL FULL JOIN
假如我们有两张表,TABLE A是左边的表,TABLE B 是右边的表
id name
1 Google
2 淘宝
3 微博
4 FaceBook
id adress
1 美国
5 中国
3 中国
6 美国
inner join 语法
select column_name(s) from table 1 INNER JOIN table 2
on table 1.column_name=table 2.column_name
1、INNER JOIN
INNER JOIN 与 JOIN 相同
INNER JOIN 产生的结果集中,是1和2的交集
select * from table a inner join table b on a.id=b.id
执行sql,输出结果如下
id name adress
1 Google 美国
3 微博 中国
2、LEFT JOIN
LET JOIN 返回左表的全部行和右表满足on条件的行,如果左表的行在右表中没有匹配,那么这一行右表中用NULL 表示
left join 语法
select column_name(s) from table 1 LEFT JOIN table 2
on table 1.column_name=table 2.column_name
在某些数据库中 left join 称为 left outer join
left join 产生表1的完全值,而表2中匹配的则有值,没有匹配的则以null取代
select * from table a left join table b
on a.id=b.id
执行以上SQL输出结果
id name adress
1 Google 美国
2 淘宝 null
3 微博 中国
4 facebook null
3、right left
right join 返回右表的全部行和左表满足on条件的行,如果右表的行在左表中没有匹配,那么左表中用NULL表示
right join 语法
select column_name(s) from table 1 RIGHT JOIN table 2
on table 1.column_name=table 2.column_name
right join 产生表2完全值,而表1中匹配的则没有值,没有匹配的则以null取代
select * from table a right join table b on a.id=b.id
执行sql语句输出结果
id name adress
1 Google 美国
5 null 中国
3 微博 中国
6 null 美国
4、full_outer_join
full_outer_join 返回左表和右表所有行,如果其中一个表的数据行,在另一个表中没有匹配的行,那么对面的数据用NULL代替。
full_outer_join 语法
select column_name(s) from table 1 full outer table 2 on
table 1.column=table 2.column
select * from table a full outer table b on a.id=b.id
执行sql语句
id name dress
1 Google 美国
2 淘宝 null
3 微博 中国
4 facebook null
5 null 中国
6 null 美国