案例:查询不是老板的员工
那么只需要查出员工号不在管理员号范围内
select * from emp where empno not in (select MGR from emp);
结果

原因:子查询结果集出现了空值

–只要子查询中返回值包含null值,不要使用not in,因为not in 等同与<> ALL(不等于所有值),就包括<>null ,然后不管是=null还是<>null 都是否,因为判断为空用is null,is not null
比如,a not in(10,null)相当于a!=10 and a!=null,然而a!=null永远为假,
所以正确的方法,去掉子查询空值

本文讨论了如何修正SQL查询,避免因子查询包含空值导致的错误。通过讲解正确使用NOT IN操作和处理NULL值的方法,演示了如何筛选出不是管理员的员工列表。
260

被折叠的 条评论
为什么被折叠?



