MySQL not in无法查出数据(MySQL not in 无效)

今天遇到一个bug,在做复杂查询的时候,用到了 primary_id not in (select id from other_table) 的sql,但是查询出来的数据集却是空的,sql语句完全没有问题,自己排查无果后,后来去翻阅了资料才发现问题所在。

mysql 的 not in 中,不能包含 null 值。否则,将会返回空结果集。

原来mysql中的not in关键字在做匹配的时候,如果id集合中有null值,就会返回空的结果集,再看了我的数据之后,发现果然如此,id集合中果然是有空值的,所以出现了返回空结果集的现象

错误 SQL:(如果table_B表中的 id 包含null值,那么就会返回空的结果集)

?

select * from table_A a

where a.id  not in(select b.id from  table_B b )

正确SQL:

select * from table_A a

where a.id  not in(select b.id from  table_B b where b.id is not null)

其实只要保证not in中的子查询结果集中的id 没有null 值即可,实现的方式有很多,大家也可以多多进言献策,一起成长

MySQL not in无法查出数据(MySQL not in 无效)

上一篇:mysql8版本之后的授权用户远程登录


下一篇:Oracle创建用户、角色、授权、建表