1. 表结构.
表A
表B
2. 内连接
语句
select
*
from
A a
inner join B b on b.id = a.out_id
等于
select
*
from
A a,B b
where b.id = a.out_id
结果
分析:
ON 字句连接条件,不再与左连接或右连接的功效一样,
除了作为2表记录匹配的条件外,还会起到过滤记录的作用,
若 A表 中记录无法在 B表 中找到对应的记录,则会被过滤掉.
WHERE字句,不管是涉及A表、B表上的限制条件,
还是涉及2表连接的条件,都会对记录集起到过滤作用,把不符合要求的记录刷选掉.
3. 左连接
语句
select
*
from
A a
left join B b on b.id = a.out_id
结果
分析:
ON字句连接条件,用于把2表中等值的记录连接在一起.但是不影响记录集的数量。
若是表A中的某记录,无法在表B找到对应的记录,则此记录依然显示在记录集钟.
只是表 B 需要在查询显示的列的值用NULL替代.
ON字句连接条件中表A和表B建立链接的关联
WHERE字句控制记录是否符合查询要求,不符合则过滤掉.
总结:ON字句控制B表的列值符合显示,还是不符合就用NULL替换,不影响最终符合查询要求的记录集;
WHERE字句是控制那些记录是显示在最终的记录集中。
4. 右连接
语句
select
*
from
A a
right join B b on b.id = a.out_id
结果
分析:
ON字句连接条件,用于把2表中等值的记录连接在一起,
若是表 B 中的某记录,无法在表 A 找到对应的记录,
则表 left_able需要在查询显示的列的值用NULL替代.
ON字句连接条件中表A和表B的链接条件
WHERE字句控制记录是否符合查询要求,不符合则过滤掉.
总结:ON字句控制A的列值符合显示,还是不符合而用NULL替换掉.
不影响最终符合查询要求的记录集;
WHERE字句是控制那些记录是显示在最终的记录集中。
我们会发现LEFT JOIN 和RIGHT JOIN是类似的,
只是以连接关键字左边还是右边表为准匹配。