mysql - SQL 中的 NULL 在以下场景中如何工作?

标签 mysql sql database null

我正在练习 SQL,并意识到 SQL 中的 NULL 是非常令人惊奇的“实体”。

表“xoPlease see the link for table structure and contents

当我运行以下 SQL 查询时

select a from xo where a not in (select c from xo) ;

不返回任何行。当我运行此查询时

select a from xo where a  in (select c from xo);

它按照我预测的方式工作。

您能解释一下上面的事情实际上是如何运作的吗?如果您能够提供一些额外的资源来真正理解 NULL,那将会非常有帮助。

Fiddle

最佳答案

这是因为 NULL 在 SQL 中被特殊对待。每当您将某些内容与 NULL 进行比较时,它都会返回 unknown,这反过来又会使 NOT IN 条件下的比较失败。

这就是为什么建议使用 EXISTS() 而不是 NOT IN 的原因之一。

Fiddle

关于mysql - SQL 中的 NULL 在以下场景中如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53306006/

相关文章:

mysql - 用户花费的平均时间(包括所有登录和注销)

SQL左连接多行合并为一行

database - 查找没有特定关系的节点 (Cypher/neo4j)

sql - 如何通过过滤器有效地获得最小值和最大值?

PHP 服务器输出关于 FD_SETSIZE 的警告

php - 存储用户网站权限并在mySQL中查询的方法?

mysql加入和分组

database - 计算 Firebird 3.0 bigint 与 Firebird 2.5 整数

database - 使用部分多键唯一索引时出现 E11000 (DuplicateKey) 错误

php - 插入数据时如何使用mysql验证字符串