我正在练习 SQL,并意识到 SQL 中的 NULL 是非常令人惊奇的“实体”。
表“xo” Please 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,那将会非常有帮助。
最佳答案
这是因为 NULL
在 SQL 中被特殊对待。每当您将某些内容与 NULL
进行比较时,它都会返回 unknown,这反过来又会使 NOT IN
条件下的比较失败。
这就是为什么建议使用 EXISTS()
而不是 NOT IN
的原因之一。
关于mysql - SQL 中的 NULL 在以下场景中如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53306006/