SQL中not in的一个坑

因not in 效率较低,在工作用一只用left join代替,在某一次查询使用了not in发现,结果为空,sql大致如下

select id from table1 where id not in (select id from table2)

经过查询发现select id from table2里面的id有null值导致该语句为空

以下是验证数据

create table table1 (id char);
insert into table1 values('a');
insert into table1 values('b');
insert into table1 values('c');


create table table2 (id char);
insert into table2 values('c');
insert into table2 values('d');
insert into table2 values(null);

表table1中数据
在这里插入图片描述
表table2中数据
在这里插入图片描述
table2 中有null直接查询为空
在这里插入图片描述
除去table2中的null有结果了
在这里插入图片描述
看似很小的点,如果没有注意到很可能导致很大的线上事故

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值