當我使用的語句的錯誤結果在MySQL
select Name, Id
from employee
where Id in (1234,1234,NULL);
我得到正確的結果。然而,當我寫的查詢
select Name, Id
from employee
where Id not in (1234,5678,NULL);
我只是得到「空集」作爲結果。請告訴我爲什麼會發生這種情況。我正在使用MYSQL。
當我使用的語句的錯誤結果在MySQL
select Name, Id
from employee
where Id in (1234,1234,NULL);
我得到正確的結果。然而,當我寫的查詢
select Name, Id
from employee
where Id not in (1234,5678,NULL);
我只是得到「空集」作爲結果。請告訴我爲什麼會發生這種情況。我正在使用MYSQL。
因爲與null
比較未知的結果。您必須使用IS
運營商與null
select Name, Id
from employee
where Id not in (1234,3456)
and Id is not null
正如其他人說,NULL
比較什麼結果爲UNKNOWN
(除了TRUE
和FALSE
第三邏輯狀態要擴大你的兩個表達式:
Id in (1234,1234,NULL)
=>Id = 1234 or Id = 1234 or Id = NULL
=>Id = 1234 or Id = 1234 or UNKNOWN
TRUE or <anything>
的計算結果爲TRUE
,所以如果Id = 1234
返回 TRUE
,整個expresison是TRUE
Id not in (1234,5678,NULL)
=>Id != 1234 and Id != 5678 and Id != NULL
=>Id != 1234 and Id != 5678 and UNKNOWN
<anything> and UNKNOWN
的計算結果爲UNKNOWN
,所以對於沒有行會的條件評估爲TRUE
,從而沒有行返回