您的位置:首页技术文章
文章详情页

MySQL子查询的空值问题解决

【字号: 日期:2023-08-02 20:12:38浏览:2作者:猪猪

目前数据库中有三个表

EMPLOYEES表DEPARTMENTS表LOCATIONS表employee_iddepartment_idlocation_idfirst_namedepartment_namestreet_addresslast_namemanager_idpostal_codeemaillocation_idcityphone_numberstate_provincejob_idcountry_idsalarycommission_pctmanager_iddepartment_id#现在要求:#查找公司管理者的last_name。已知manager_id有为null的数据SELECT last_nameFROM employeesWHERE employee_id IN ( SELECT manager_id FROM employees );

这里找出了所有公司管理者的名字(18行数据)。 ​ 已知employees中共107行数据 ​ 现要查出这18人以外的人,理论上有89人。

#已知manager_id有为null的数据SELECT last_nameFROM employeesWHERE employee_id NOT IN ( SELECT manager_idFROM employees);

可见,查询结果为空。

原因: 使用not in 的时候,如果not in后面的选项中有null,不会查询出来任何数据。sql语句本身直接返回false

#举例SELECT employee_id,last_nameFROM employees WHERE employee_id NOT IN (NULL,101,102);#该语句返回空集

举例的查询语句等价于

SELECT employee_id,last_nameFROM employees WHERE employee_id!= NULL AND employee_id!=101 AND employee_id!=102;

WHERE中的条件永远返回null

null不能参与比较运算符,即与任何数据比较结果都为null,

比较结果分为true、false、null,只有结果为true时候,系统才认为匹配成功并返回记录,

到此这篇关于MySQL子查询的空值问题解决的文章就介绍到这了,更多相关MySQL子查询空值内容请搜索好吧啦网以前的文章或继续浏览下面的相关文章希望大家以后多多支持好吧啦网!

标签: MySQL 数据库