mysql,如何理解左连接left join和右连接right join语句?
发布于 作者:苏南大叔 来源:程序如此灵动~

本文描述mysql
的左连接left join
和右连接right join
。在实际的日常应用中,这两个语句都是非常常见的。在本文中,通过对预设的数据进行左连接和右连接的查询,对比说明两者的区别。

大家好,这里是苏南大叔的程序如此灵动博客,记录苏南大叔代码方面的所学所想。本文就mysql
的左连接和右连接的写法进行讨论。测试环境:win10
,mysql@5.7.26
,MySQLFront@5.3
。
样本数据集
首先,介绍一下测试标本。两个表users
、posts
,users
发表posts
。共有三个user
,用户一发表了两篇post
,用户二发表了一篇post
,用户三没有发布任何内容。并且被发布的post
中,有个神秘人(不能识别的user
),发布了一篇文章。
所以,两者的交集是1,2
,A独有的是3
,B独有的是9
。建表语句如下:

左连接left join,右表可能null
使用left join
可以获得左表的全部数据 + (右表部分数据 + null
)。
left join
表示左侧表所有记录都将返回,并且不满足匹配条件的右侧连接表记录将返回null
。
测试语句如下:

可以看到拿到的数据是左表的全部以及右表的部分数据。他们可以通过下面的语句分别获得:
直接获得左表的独有数据+null
(非交集数据),(where 右表.key is null
):

获得两者交集部分:

右链接right join,左表可能null
使用right join
可以获得右表的全部数据 + (左表部分数据 + null
)。
right join
表示右侧表所有记录都将返回,并且不满足匹配条件的左侧连接表记录将返回null
。
测试语句如下:

可以看到拿到的数据是右表的全部以及左表的部分数据。他们可以通过下面的语句分别获得:
直接获得右表的独有数据+null
,(where 左表.key is null
):

获得两者交集部分,(执行效果和对应的left join
一致):

相关链接
总结
在本文中,拿到两者交集的方式有两种,后续还有其它的获取方式。更多mysql
相关文章,请参考:


