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的区别)

SQL中inner join,outer join和cross join的区别