图解 5 种 Join 连接及实战案例!(inner/ left/ right/ full/ cross)

简介: Join 连接在日常开发用得比较多,但大家都搞清楚了它们的使用区别吗??一文带你上车~~内连接 inner join内连接是基于连接谓词将俩张表(如A和B)的列组合到一起产生新的结果表,在表中存在至少一个匹配时,INNER JOIN 关键字返回行。

Join 连接在日常开发用得比较多,但大家都搞清楚了它们的使用区别吗??一文带你上车~~

内连接 inner join

内连接是基于连接谓词将俩张表(如A和B)的列组合到一起产生新的结果表,在表中存在至少一个匹配时,INNER JOIN 关键字返回行。


image

下面是一个简单的使用案例


image

以下是运行代码及结果


image

左外连接 left join

左外连接Left join关键字会从左表那里返回所有的行,即使是在右表中没有匹配到的行


image

下面是一个简单的案例


image

下面是测试用例


image

右外连接 right join

右外连接关键字Right join会从右表那里返回所有的行,即使是在左表中没有匹配到的行


image

下面是一个简单的案例


image

下面是运行及其结果


image

全连接 full join

全连接的关键字Full join,只要其中某个表中存在匹配,Full join 就会返回行


image

下面是一个简单的案例


image

以下是运行及结果


image

注意一点 mysql中是不支持Full join 的但是orcal等数据库是支持的。
如果在mysql要使用Full join就会报以下错误


image

解决办法:同时使用左连接和右连接

以下是一个简单的例子
image

交叉连接 cross join

交叉连接一般使用的比较少,交叉连接又称笛卡尔连接或者叉乘连接,如果,A和B是俩个集合,他们的交叉连接就是A*B

以下是一个简单的案例


image

推荐:Spring Boot & Cloud 最强技术教程

扫描关注我们的微信公众号,干货每天更新。

image
相关文章
|
6月前
|
流计算
在Flink中,Regular Join(包括Left Join)的结果顺序是由Flink的分区策略和数据的分布方式共同决定的
在Flink中,Regular Join(包括Left Join)的结果顺序是由Flink的分区策略和数据的分布方式共同决定的
24 1
|
8月前
|
关系型数据库 MySQL
关于MySQL中的LEFT JOIN和LEFT OUTER JOIN的区别
LEFT JOIN是LEFT OUTER JOIN的简写版;
114 0
|
开发者 Python
Join 方法 | 学习笔记
快速学习 Join 方法
55 0
|
SQL 关系型数据库 MySQL
Join,left join,right join(1)--连接原理(三十九)
Join,left join,right join(1)--连接原理(三十九)
|
SQL 语音技术 数据库
SQL基础【十五、join、Inner join、Left join、Right join、Full join】
SQL基础【十五、join、Inner join、Left join、Right join、Full join】
130 0
SQL基础【十五、join、Inner join、Left join、Right join、Full join】
|
SQL 数据库
left join 后用 on 还是 where,区别大了!
前天写SQL时本想通过 A left B join on and 后面的条件来使查出的两条记录变成一条,奈何发现还是有两条。 后来发现 join on and 不会过滤结果记录条数,只会根据and后的条件是否显示 B表的记录,A表的记录一定会显示。 不管and 后面的是A.id=1还是B.id=1,都显示出A表中所有的记录,并关联显示B中对应A表中id为1的记录或者B表中id为1的记录。
107 0
left join 后用 on 还是 where,区别大了!
|
分布式计算 MaxCompute 索引
【转载】MaxCompute full outer join改写left anti join实践
ods层数据同步时经常会遇到增全量合并的模型,即T-1天增量表 + T-2全量表 = T-1全量表。可以通过full outer join脚本来完成合并,但是数据量很大时非常消耗资源。本文将为您介绍在做增量数据的增加、更新时如何通过full outer join改写left anti join来实现的最佳实践。
12695 0
【转载】MaxCompute full outer join改写left anti join实践
|
SQL 关系型数据库 MySQL
正确理解Left join
通俗来讲,left join就是以左表作为主表,结果返回左表的所有记录,右表满足条件记录正常显示,满足条件记录使用NULL做填充,一般业务中我们需要显示左表全部记录时才会使用left join。另外,某些情况下MySQL优化器会将我们的left join改写为join,什么情况下MySQL会做这样的优化?
1172 0
SQL优化--inner、left join替换in、not in、except
SQL优化--inner、left join替换in、not in、except新系统上线,用户基数16万,各种查询timeout。打开砂锅问到底,直接看sql语句吧,都是泪呀,一大堆innot inexcept。
1305 0