概述
一、 为什么会出现多行子查询空值问题
- NOT IN 的使用
多行子查询的空值问题实际上是NOT IN的适用错误:
SELECT 'a' IN ('a','b','c'), 1 IN (2,3), NULL IN ('a','b'), 'b' NOT IN ('a', NULL);
结果如下:
'a' IN ('a','b','c') 1 IN (2,3) NULL IN ('a','b') 'b' not IN ('a', NULL)
-------------------- ---------- ----------------- ------------------------
1 0 (NULL) (NULL)
在NOT IN的IN列表中不能包含NULL否则返回值为空。
- 在多行子查询中NOT IN的子查询IN列表同样不能有NULL值的存在:
SELECT last_name
FROM employees
WHERE employee_id NOT IN
(SELECT manager_id
FROM employees);
结果如下:
last_name
-----------
单独运行:
SELECT manager_id
FROM employees;
结果如下:包含空值
manager_id
------------
(NULL)
100
100
100
100
100
100
100
100
100
二、多行子查询空值问题的解决
确保NOT IN 的IN列表中不包含空值NULL,可以添加过滤条件:
SELECT last_name
FROM employees
WHERE employee_id NOT IN
(SELECT manager_id
FROM employees
WHERE manager_id IS NOT NULL);
最后
以上就是辛勤香水为你收集整理的MySQL多行子查询空值问题的全部内容,希望文章能够帮你解决MySQL多行子查询空值问题所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复