A left join B on a.key=b.key
即使a.key为null也会显示数据,牢牢记住:会显示A的所有数据!!

left join/right join/inner join/full outer join
注意使用left join之类的可能会有A表有keyB表没key,所以join之后会存在一些key的有关B的数据为null的情形
敲黑板!这个时候再使用where条件去过滤的时候就很容易出bug,因为b表的一些数据为null,不参与比较条件,那么这一部分数据就被全部过滤掉了,那你left join和join的形式就没差别,从而就错了,这个时候解决办法是再嵌套一层。
总结一下:当left join/full outer join连接后出现null但却是需要这个有null的字段用于where比较的时候,
解决办法:将那个含有null的字段根据业务强行填充一个数(再嵌套一层填充)变成没有null之后再where比较即可
强行改变

本文探讨了SQL中left join、right join、inner join和full outer join的使用,特别是left join后处理NULL值的问题。当使用where条件过滤时,由于B表数据为NULL,可能导致错误的结果。解决方法是在比较前通过再嵌套一层或使用COALESCE函数填充NULL,确保比较的正确性。以一个具体的业务场景为例,解释了如何避免因NULL值导致的数据丢失问题。
最低0.47元/天 解锁文章
4973

被折叠的 条评论
为什么被折叠?



