首页 > 数据库技术 > 详细

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

时间:2021-06-25 10:03:29      阅读:17      评论:0      收藏:0      [点我收藏+]

今天遇到一个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 无效)

原文:https://blog.51cto.com/u_14989214/2946551

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!