千家信息网

错误使用LEFTJOIN 导致错误数据释疑的示例分析

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,错误使用LEFTJOIN 导致错误数据释疑的示例分析,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。昨天,公司的某位熟悉业务和SQL的人员
千家信息网最后更新 2026年11月03日错误使用LEFTJOIN 导致错误数据释疑的示例分析

错误使用LEFTJOIN 导致错误数据释疑的示例分析,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

昨天,公司的某位熟悉业务和SQL的人员,着急忙慌的找我,说必须要解决一个线上的SQL的问题,发现数据对不上了,搞不定挨批事小,但数据错误事关重大。责无旁贷的赶紧和他一起分析这个SQL。

其实就是两个表,一个表中有另一个表的关联键,你可以认为是主外键关系(这里仅仅是关系,我没有说是主外键,或者绝对一一对应)。他的问题是

为什么两个表单表查询的数据是正确了,只要一left join 就有NULL空数据,这是已经上线多时的一个SQL 语句,今天突然发现对账的结果不对??????

OK,生产数据一定是不能拿来做演示的,这里就简单的建两个表,来说明这个问题,两个表

这里用SIZE_1 和 SIZE_2 来做连接,原来生产的SQL是类似这样的写法(实际当中比这个要复杂的多,5个表的LEFT JOIN 加6-7个条件)

select tab1.*,tab2.*

from tab1 as tab1

left join tab2 as tab2 on tab1.size_1 = tab2.size_2 and tab2.name = 'aaa'

这位工作人员的问题就是为什么会出现NULL ,他希望出现的结果是

我和他解释,出现上面NULL的结果是很正常的,原因是程序员没有明白LEFT JOIN 和 后面直接给条件 和 下写法的区别,认为两个是相等的

这里程序员把条件写到上面可能是收到数据库优化的知识的影响,知道SQL优化器执行的顺序(这里不在多讲)

我和这位工作人员解释,出现错误结果就是讲这个条件放到LEFT JOIN 后,造成的。

我给他解释了一下大致的原因,下面的图能很好的诠释三种写法查询后的数据,以及造成数据错误的原因。大家可以很清晰的看到,只有第一种写法造成查询结果和预期不一致。

1、 on条件是在生成临时表时使用的条件,它不管on中的条件是否为真,都会返回左边表中的记录。

2、where条件是在临时表生成好后,再对临时表进行过滤的条件。这时已经没有left join的含义(必须返回左边表的记录)了,条件不为真的就全部过滤掉。

而left join,right join,full join的特殊性,不管on上的条件是否为真都会返回left或right表中的记录,full则具有left和right的特性的并集。 而inner jion没这个特殊性,则条件放在on中和where中,返回的结果集是相同的。

看完上述内容,你们掌握错误使用LEFTJOIN 导致错误数据释疑的示例分析的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注行业资讯频道,感谢各位的阅读!

条件 数据 错误 结果 问题 两个 写法 原因 分析 人员 就是 查询 解释 示例 特殊 内容 工作人员 方法 是在 更多 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 百单网互联网科技有限公司怎么样 华服互联网科技靠谱吗 港股互联网科技股 腾讯科技 互联网女皇 互联网科技公司名称 互联网科技公司招聘 互联网科技博主是什么意思 科技互联网的估值 互联网经济与金融科技 互联网还是高科技吗 移动互联网科技公司 晓花互联网科技有限公司网址 天津腾达互联网科技有限公司 互联网新科技动漫ppt素材 工业互联网等科技实现智能化赋能 富国互联网科技002692 广州梦谷互联网科技有限公司领导 陕西九四连强互联网科技有限公司 科技信息时代互联网发展 互联网科技和医药行业 礼当家互联网科技 南京欣网互联网科技 赫美联合互联网科技 万达互联网科技 互联网科技网站 华中科技有哪些互联网大佬 西藏七维空间互联网科技有限公司 搜狐科技互联网 特约风豹互联网科技为什么扣费 杭州披云加互联网科技有限公司
0