子查询中的空值导致的问题。
生活随笔
收集整理的這篇文章主要介紹了
子查询中的空值导致的问题。
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
例如有一張員工表,? 表入面有自連接
現在要查詢 不是經理的人員(就是manager_id 記錄沒有 他的employee_id的人員)
但是實際上找不到數據:
為什么呢
答案是自查詢存在null值
而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);
現在要查詢 不是經理的人員(就是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);
總結
以上是生活随笔為你收集整理的子查询中的空值导致的问题。的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 详解在group by分组查询中wher
- 下一篇: 关于Oracle Insert 语句的子