差集并集的各种变式(join

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

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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比较即可

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值