MySQL子查詢的空值問題解決
目前數據庫中有三個表
| EMPLOYEES表 | DEPARTMENTS表 | LOCATIONS表 |
|---|---|---|
| employee_id | department_id | location_id |
| first_name | department_name | street_address |
| last_name | manager_id | postal_code |
| location_id | city | |
| phone_number | state_province | |
| job_id | country_id | |
| salary | ||
| commission_pct | ||
| manager_id | ||
| department_id |
#現(xiàn)在要求:
#查找公司管理者的last_name。已知manager_id有為null的數據
SELECT last_name
FROM employees
WHERE employee_id IN (
SELECT manager_id
FROM employees
);
這里找出了所有公司管理者的名字(18行數據)。 ? 已知employees中共107行數據 ? 現(xiàn)要查出這18人以外的人,理論上有89人。
#已知manager_id有為null的數據 SELECT last_name FROM employees WHERE employee_id NOT IN ( SELECT manager_id FROM employees );

可見,查詢結果為空。
原因: 使用not in 的時候,如果not in后面的選項中有null,不會查詢出來任何數據。sql語句本身直接返回false
#舉例 SELECT employee_id,last_name FROM employees WHERE employee_id NOT IN (NULL,101,102); #該語句返回空集
舉例的查詢語句等價于
SELECT employee_id,last_name FROM employees WHERE employee_id!= NULL AND employee_id!=101 AND employee_id!=102;
WHERE中的條件永遠返回null
null不能參與比較運算符,即與任何數據比較結果都為null,
比較結果分為true、false、null,只有結果為true時候,系統(tǒng)才認為匹配成功并返回記錄,
到此這篇關于MySQL子查詢的空值問題解決的文章就介紹到這了,更多相關MySQL子查詢空值內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Oracle10個分區(qū)和Mysql分區(qū)區(qū)別詳解
MySQL分區(qū)常用的是:range、list、hash、key,Oracle10g分區(qū)常用的是:range(范圍分區(qū))、list(列表分區(qū))、hash(哈希分區(qū))、range-hash(范圍—哈希分區(qū))、range-list(列表—復合分區(qū))。下面通過本文詳細給大家介紹Oracle10個分區(qū)和Mysql分區(qū)區(qū)別,一起看看2017-02-02
MySQL5.7中 performance和sys schema中的監(jiān)控參數解釋(推薦)
在MySQL5.7中,performance schema有很大改進,包括引入大量新加入的監(jiān)控項、降低占用空間和負載,以及通過新的sys schema機制顯著提升易用性。下面通過本文給大家介紹 MySQL5.7中 performance和sys schema中的監(jiān)控參數解釋,需要的朋友可以參考下2017-08-08

