LEFT JOIN 使用注意事项

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LEFT JOIN 使用注意事项相关的知识,希望对你有一定的参考价值。

参考技术A left join 通俗的解释:以左表为主表,返回左表的所有行,如果右表中没有匹配,则依然会有左表的记录,右表字段用null填充。看起来非常好理解,但实际操作的过程中可能会有一些很容易被忽略的点。

如果存在多个left join on,请注意on后面的条件与哪个表关联。这一条统计的SQL很重要!例如表A,B,C,A left join B on A.x = B.x left join C on A.x = C.x,B和C的都要和A建立关联,B和C之间是没有任何数据上的关系。但是 如果把A.x = C.x改成B.x = C.x,那么B和C的表数据先建立关联并过滤数据,再与A表数据进行关联,这样可能会出现数据丢失!

接下来我们进一步看一下连接条件写在on里和写在where里的区别。在这之前,我们可以看看left join的具体执行逻辑。我参考了网上以为大神的博客:

https://developer.aliyun.com/article/718897 ,总结如下

————————————————
参考链接:
https://blog.csdn.net/qq_30038111/article/details/103594735
https://zhuanlan.zhihu.com/p/85856388

left join分页查询

参考技术A 场景:表A和表B是1对多关系,分页查询表A的20条记录。
处理:不用PageHelper,先按条件count表A,计算offset。

注意:如果两个表中的字段名相同,list'中只有一条记录,可以在resultMap中用别名来解决,这里是不取这个字段。

以上是关于LEFT JOIN 使用注意事项的主要内容,如果未能解决你的问题,请参考以下文章

left join 注意

MySQL # left join 语句,对右表的限制条件使用注意问题

left join一些小坑

sql中left join on 多个条件需要特殊注意之处

Hive的join表连接查询的一些注意事项

left join分页查询