我正在学习如何编写 TSQL 查询。我试图深入了解它们。我从教程中获得的这个查询要求我在第二个 WHERE 子句中检查 NOT NULL。
SELECT *
FROM Person.Person AS p
WHERE NOT p.BusinessEntityID IN (
SELECT PersonID
FROM Sales.Customer
WHERE PersonID IS NOT NULL);
现在表 Sales.Customer 有一些 PersonID 的 NULL 值。如果我在子查询中删除此 WHERE 子句,则不会返回任何结果。在我对此事的明显错误思考中,我认为如果子查询返回 NULL 它根本不满足外部查询中 WHERE 子句的条件。我希望获得 PersonID 不为 NULL 的行的结果集。为什么按照这个推理它不起作用?