joins主要是合并两个表中的数据组成一个临时的结果集,on后面指定执行连接所使用的的条件。inner join返回两个表基于连接条件实际匹配的行,即两个表交集。outer join返回两个表的并集结果,即匹配条件不满足的两个表的记录也将返回。
下面结合实例讲解,有如下两个表:
A表 B表
inner join
sql:
select * from A a inner join B b on a.ID = b.ID;
或者
select * from A a, B b where a.ID = b.ID;
查询结果如下:
inner查询结果
outer join
-
outer join即外连接,不需要连接表的每一条记录都匹配连接条件,不匹配连接条件的记录也将返回。即两个表的并集。outer join又包括left join以及right join。
outerjoin查询结果
mysql没有outer join 相关语句,但可以对left join和right join的结果用union连接来实现。
select * from A a left join B b on a.ID = b.ID union select * from A a right join B b on a.ID = b.ID;
结果如下图:
-
left join表示左侧表所有记录都将返回,并且不满足匹配条件的右侧连接表记录将返回null。
leftjoin查询结果
select * from A a left join B b on a.ID = b.ID;
结果如下图:
-
right join与left join恰恰相反,表示右侧表所有记录都将返回,并且不满足匹配条件的左侧连接表记录将返回null。
rightjoin查询结果
select * from A a right join B b on a.ID = b.ID;
结果如下图:
网友评论