mysql中的错误结果

mysql中的错误结果,mysql,sql,Mysql,Sql,当我使用语句时 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 employe

当我使用语句时

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(12341234,NULL)
    =>
    Id=1234或Id=1234或Id=NULL
    =>
    Id=1234或Id=1234或未知

    TRUE或
    的计算结果为
    TRUE
    ,因此如果
    Id=1234
    返回
    TRUE
    ,整个表达式为
    TRUE

  • Id不在(12345678,NULL)
    =>
    Id!=1234和Id!=5678和Id!=NULL
    =>
    Id!=1234和Id!=5678和未知

    和UNKNOWN
    计算结果为
    UNKNOWN
    ,因此对于没有行,条件将计算为
    TRUE
    ,因此没有返回行