当not-in内部查询包含值“null”时,为什么结果集为空?

q7solyqu  于 2021-06-15  发布在  Mysql
关注(0)|答案(4)|浏览(313)

这是我的mysql表,名为 samp ```
+--------+--------+
| name | roleid |
+--------+--------+
| alki | 2 |
| karthi | 3 |
| aadhil | 2 |
| pri | 2 |
| pri | 2 |
+--------+--------+

当我使用查询时 `select name from samp where name not in ('alki','pri',NULL)` 我以为结果是,

+--------+
| name |
+--------+
| karthi |
| aadhil |
+--------+

但我的结果是 `Empty set` . 我还有别的办法。但我需要知道这背后的原因。
azpvetkf

azpvetkf1#

就是这样 NULL 是为了表现。它无法与任何设计相比。您的查询被解释为:

select name
from samp
where name <> 'alki'
and name <> 'pri'
and name <> NULL

name 不等于不等于 NULL 不符合条件。

wbgh16ku

wbgh16ku2#

你可以在下面试试

select name from samp where name not in ('alki','pri') and name is not null
bbuxkriu

bbuxkriu3#

NULL 表示未知它不是一个值,您需要使用 not null 而不是用在 NULL 你可以试试这个。

select name from samp where name not in ('alki','pri') and name is not null
qvsjd97n

qvsjd97n4#

您可以简单地执行以下操作:

select name
from samp
where name not in ('alki', 'pri');
``` `NULL` 失败 `not in` ,就像大多数其他的比较都失败了一样。
如果你明确想包括 `NULL` ,则需要将其包含为:

select name
from samp
where name not in ('alki', 'pri') or name is null;

相关问题