SQL——左连接(Left join)右连接(Right join)内连接(Inner join)
Posted shenhaha
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL——左连接(Left join)右连接(Right join)内连接(Inner join)相关的知识,希望对你有一定的参考价值。
概念(定义)
首先还是介绍一下这三个的定义
Left join:即左连接,是以左表为基础,根据ON后给出的两表的条件将两表连接起来。结果会将左表所有的查询信息列出,而右表只列出ON后条件与左表满足的部分。左连接全称为左外连接,是外连接的一种。
Right join:即右连接,是以右表为基础,根据ON后给出的两表的条件将两表连接起来。结果会将右表所有的查询信息列出,而左表只列出ON后条件与右表满足的部分。右连接全称为右外连接,是外连接的一种。
Inner join:即内连接,同时将两表作为参考对象,根据ON后给出的两表的条件将两表连接起来。结果则是两表同时满足ON后的条件的部分才会列出。
mysql中没有全外连接,所以这里没做解释了。
举 个 栗 子
光看概念肯定看得迷迷糊糊的,所以举个栗子让这个概念更加深入。
假如,我有两个表A和B:
A表
B表
=======我========是========分=======割========线=======
Left join
SQL语句:SELECT * FROM A LEFT JOIN B ON A.id=B.id
结果:
Right join
SQL语句:SELECT * FROM A RIGHT JOIN B ON A.id=B.id
结果:
Inner join
SQL语句:SELECT * FROM A INNER JOIN B ON A.id=B.id
结果:
集合思维理解
根据上面的栗子,看起来是不是清晰明了多了,而且也更有对比性了。如果还是觉得只是这会儿懂了,但是用起来还是觉得有点难的话,就下面这种集合思维,大头也是最近才发现,这样想的话就会简单很多了。
我们有两个表:A和B,那么就分别将其当做一个集合
那么我们的左右外连接和内连接就相当于变成了这样↓ ↓ ↓
A Left join B -> A (根据返回需求 需连接上B中与A等条件的部分)
A Right join B -> B (根据返回需求 需连接上A中与B等条件的部分)
A Inner join B -> A∩B (根据返回需求 需连接上A与B等条件的部分)
图解就是这样↓ ↓ ↓
以上是关于SQL——左连接(Left join)右连接(Right join)内连接(Inner join)的主要内容,如果未能解决你的问题,请参考以下文章
inner join(内连接)left join(左连接)right join(右连接)full join(全连接)区别
sql中的inner join ,left join ,right join
sql语句中join、left join 、right join有啥区别?
SQL语句(inner join,left out join,right out join三者的不同
sql中 INNER JOIN LEFT JOIN RIGHT JOIN FULL JOIN 中 ON与Where的区别