Oracle子查询空指问题

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

案例:查询不是老板的员工
那么只需要查出员工号不在管理员号范围内
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永远为假,
所以正确的方法,去掉子查询空值
在这里插入图片描述

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值