SQL join 子查询组合 NULL

本文探讨了SQL中NULL值的运算特点及如何正确处理NULL值的问题,特别是当进行表连接时,如何排除特定条件而又不影响其他组合结果。通过具体案例分析了不同条件下SQL语句的执行效果。

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

涉及到NULL 如何运算问题       

表一如下:




表二如下:


现在要想表一和表二根据job1合并,并剔除表二Ti=4 的数据 left jon  组合 不影响组合结果。即如下连接,只去掉Ti是4的,其它保留



如果:

       判断放在on 后面 则

 不能满足需求


如果

     放在where 后面

   仍然不能满足需求


 这时满足需求了

  

这里面涉及到SQL运算的顺序问题,又涉及到NULL字符的运算判断问题, NULL和任何值的运算都是NULL, 上面的 where 后面需要的是True, 如果出现一个NULL 就想相当于不是TRUE,Ti<>4遇到Ti是NULL的时候结果是一个NULL,因此不满足条件,而not exists T 把不是T的都算作真,包括NULL ,因此满足了需求。注意和上面的not (b.Ti<>4) 不一样, 这个是对NULL进行NOT 运算,还是NULL

更进一步,如果去掉not


结果是:


在此进行了一次左连接,然后又相等条件选择。











评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

张博208

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值