因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有结果了
看似很小的点,如果没有注意到很可能导致很大的线上事故