SQL- inner outer join
Posted 陈蒙_
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL- inner outer join相关的知识,希望对你有一定的参考价值。
以 A 和 B 两个表为例,其中分别有字段 a 和 b,数据为:
a b
1 3
2 4
3 5
4 6
inner
inner join 是对 A 和 B 做笛卡尔积,取出满足 on 条件的组合,
以 select * from A inner join B on A.a = B.b
为例,其等价于 select * from A, B where A.a = B.b
,
结果是:
a b
3 3
4 4
outer
outer join 分为 left outer join 和 right outer join 和 full outer join,其中 outer 关键字可以省略。
left join
left join 是以左表为全量基准,把左表中的每个元素逐个右表中的元素做组合,取出满足 on 条件的组合,不满足 on 条件的则以 null 补充,最后的结果是左表元素要全量展示,结果的条数与左表元素的个数相同。
以 select * from A left join B where A.a = B.b
为例,其结果为:
a b
1 null
2 null
3 3
4 4
right join
与 left join 类似,right join 是以右表为基准,把右表中的每个元素逐个与左表中的元素做组合,取出满足 on 条件的组合,不满足 on 条件的则以 null 补充,最后的结果是右表元素全量展示,结果的条数与右表元素的个数相同。
以 select * from A right join B on where A.a = B.b
为例,其结果为:
a b
3 3
4 4
null 5
null 6
full join
full join 是将左右表中的每个元素和对方做组合,满足on条件的则取出作为结果,不满足的以null填充。以 select * from A full join B on A.a = B.b
,其结果为:
a b
1 null
2 null
3 3
4 4
null 6
null 5
以上是关于SQL- inner outer join的主要内容,如果未能解决你的问题,请参考以下文章
SQL中inner join,outer join和cross join的区别
SQL中inner join,outer join和cross join的区别
SQL中的left outer join,inner join,right outer join用法详解
SQL----Inner Join Outer JoinCross Join理解
SQL的JOIN语法解析(inner join, left join, right join, full outer join的区别)