文章詳情頁(yè)
MySQL子查詢的空值問(wèn)題解決
瀏覽:2日期:2023-08-02 20:12:38
目前數(shù)據(jù)庫(kù)中有三個(gè)表
EMPLOYEES表DEPARTMENTS表LOCATIONS表employee_iddepartment_idlocation_idfirst_namedepartment_namestreet_addresslast_namemanager_idpostal_codeemaillocation_idcityphone_numberstate_provincejob_idcountry_idsalarycommission_pctmanager_iddepartment_id#現(xiàn)在要求:#查找公司管理者的last_name。已知manager_id有為null的數(shù)據(jù)SELECT last_nameFROM employeesWHERE employee_id IN ( SELECT manager_id FROM employees );這里找出了所有公司管理者的名字(18行數(shù)據(jù))。 ? 已知employees中共107行數(shù)據(jù) ? 現(xiàn)要查出這18人以外的人,理論上有89人。
#已知manager_id有為null的數(shù)據(jù)SELECT last_nameFROM employeesWHERE employee_id NOT IN ( SELECT manager_idFROM employees);可見(jiàn),查詢結(jié)果為空。
原因: 使用not in 的時(shí)候,如果not in后面的選項(xiàng)中有null,不會(huì)查詢出來(lái)任何數(shù)據(jù)。sql語(yǔ)句本身直接返回false
#舉例SELECT employee_id,last_nameFROM employees WHERE employee_id NOT IN (NULL,101,102);#該語(yǔ)句返回空集舉例的查詢語(yǔ)句等價(jià)于
SELECT employee_id,last_nameFROM employees WHERE employee_id!= NULL AND employee_id!=101 AND employee_id!=102;WHERE中的條件永遠(yuǎn)返回null
null不能參與比較運(yùn)算符,即與任何數(shù)據(jù)比較結(jié)果都為null,
比較結(jié)果分為true、false、null,只有結(jié)果為true時(shí)候,系統(tǒng)才認(rèn)為匹配成功并返回記錄,
到此這篇關(guān)于MySQL子查詢的空值問(wèn)題解決的文章就介紹到這了,更多相關(guān)MySQL子查詢空值內(nèi)容請(qǐng)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!
標(biāo)簽:
MySQL
數(shù)據(jù)庫(kù)
排行榜
