Я учусь писать запросы TSQL. Я пытаюсь понять их глубже. Этот запрос, который я получил из учебника, требует, чтобы я проверял наличие NOT NULL во втором предложении WHERE.
SELECT *
FROM Person.Person AS p
WHERE NOT p.BusinessEntityID IN (
SELECT PersonID
FROM Sales.Customer
WHERE PersonID IS NOT NULL);
Теперь таблица Sales.Customer имеет несколько значений NULL для PersonID. Если я удалю это предложение WHERE в подзапросе, я не получу никаких результатов. В моем явно ошибочном мышлении по этому вопросу я бы подумал, что если подзапрос вернет NULL, он просто не будет соответствовать условию предложения WHERE во внешнем запросе. Я ожидал бы получить результирующий набор для строк с PersonID, отличным от NULL. Почему это не работает в соответствии с этим рассуждением?