首页 > 解决方案 > SQL 中的 NULL 在以下场景中如何工作?

问题描述

我正在练习 SQL 并意识到 SQL 中的NULL是非常了不起的“实体”。

表“ xo请查看表结构和内容的链接

当我运行以下 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,那将非常有帮助。

小提琴

标签: mysqlsqldatabasenull

解决方案


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

这也是推荐使用EXISTS()over的原因之一NOT IN

小提琴


推荐阅读