子查询中的空值导致的问题。
来源:互联网 发布:淘宝卖家 转账20万 编辑:程序博客网 时间:2024/04/28 00:44
例如有一张员工表, 表入面有自连接
现在要查询 不是经理的人员(就是manager_id 记录没有 他的employee_id的人员)
但是实际上找不到数据:
为什么呢
答案是自查询存在null值
而Not in 实际上就是 <>ALL 而用大于或小于来比较Null值的话,都返回null的。(false)
所以整体语句就返回Null了。
解决方法: 令自查询不存在Null值:
现在要查询 不是经理的人员(就是manager_id 记录没有 他的employee_id的人员)
上面的语句逻辑上看起来是没有错误的
SELECT emp.last_name
FROM
employees emp
WHERE emp.employee_id NOT IN
(SELECT mgr.manager_id
from employees mgr);
但是实际上找不到数据:
为什么呢
答案是自查询存在null值
SELECT mgr.manager_id
from employees mgr
而Not in 实际上就是 <>ALL 而用大于或小于来比较Null值的话,都返回null的。(false)
所以整体语句就返回Null了。
解决方法: 令自查询不存在Null值:
SELECT emp.last_name
FROM
employees emp
WHERE emp.employee_id NOT IN
(SELECT mgr.manager_id
from employees mgr
where not mgr.manager_id is null);
- 子查询中的空值导致的问题。
- 子查询中的NULL问题
- 关于多行子查询中的空值问题,not null
- properties导致空指针的问题
- WebView loadurl导致的空指针问题
- MySQL查询中的非空问题
- Blob字段为空值的查询问题
- in子查询的问题
- struts2开发中遇到的disabled=true导致的空值提交问题
- image src 属性为空导致的问题
- android ndk空指针导致CRASH的问题
- 前台集成 dwr, 导致后台servletContext 为空的问题
- 子查询中空值问题
- 涉及到空值的查询
- MySQL的空值查询
- 表里存在NULL值导致 not in 子查询失效
- ORACLE数据库查询空值问题
- Cannot resolve the collation conflict between "Chinese_PRC_CI_AS" and "SQL_L及由于排序规则不同导致查询结果为空的问题
- initrd镜像文件的作用与制作
- Gentoo 安装日记 21 (第一次重启)
- [转]解决linux下sqldeveloper 中文环境显示乱码的问题
- sql 外连接的写法。
- 详解在group by分组查询中where 和 having的用法和区别。
- 子查询中的空值导致的问题。
- 关于Oracle Insert 语句的子查询 和 with check option的用法
- [摘]一张图 , oracle merge用法:
- [转]DML DDL DCL 语言的区别
- Oracle 一些常用的数据字典
- Oracle 用子查询创建表
- Orace 数据字典表前缀 解释。
- Oracel 修改约束命令
- Oracle中的序列 sequence 用法