我是靠谱客的博主 辛勤香水,最近开发中收集的这篇文章主要介绍MySQL多行子查询空值问题,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

一、 为什么会出现多行子查询空值问题

  1. 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否则返回值为空。

  1. 在多行子查询中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多行子查询空值问题所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(46)

评论列表共有 0 条评论

立即
投稿
返回
顶部