`
编程足球
  • 浏览: 250895 次
  • 性别: Icon_minigender_1
  • 来自: 福州
社区版块
存档分类
最新评论

SQL连接方式(左连接、右连接、内连接)

    博客分类:
  • SQL
 
阅读更多
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是类似的,
只是以连接关键字左边还是右边表为准匹配。



分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics