НЕ В ПРОТИВ НЕ СУЩЕСТВУЕТ
Также имейте в виду, что sql-syntax NOT IN не эквивалентно NOT sql EXISTS, когда дело доходит sql-statement до null.
Этот пост очень хорошо sql-server это объясняет
http://sqlinthewild.co.za/index.php/2010/02/18/not-exists-vs-not-in/
Если подзапрос sql возвращает хотя бы одно значение sql-select null, NOT IN не будет соответствовать mssql ни одному ряды.
Причину sql-query этого можно найти, подробно sql-syntax изучив, что На самом деле sql-statement означает НЕ В РАБОТЕ.
Допустим, для sql-srever наглядности в таблица с sql-syntax именем t, есть столбец с sql-select именем ID со значениями 1..4
WHERE SomeValue NOT IN (SELECT AVal FROM t)
эквивалентно
WHERE SomeValue != (SELECT AVal FROM t WHERE ID=1) AND SomeValue != (SELECT AVal FROM t WHERE ID=2) AND SomeValue != (SELECT AVal FROM t WHERE ID=3) AND SomeValue != (SELECT AVal FROM t WHERE ID=4)
Далее notin предположим, что AVal имеет mssql значение NULL, где ID = 4. Следовательно,! = сравнение sql-syntax возвращает НЕИЗВЕСТНО. Таблица sql логической истинности для select-statement состояний И что НЕИЗВЕСТНО sql-server и ИСТИНА - НЕИЗВЕСТНО, НЕИЗВЕСТНО sql-server и ЛОЖЬ - ЛОЖЬ. Там есть нет notin значения, которое можно было select-statement бы использовать AND с UNKNOWN, чтобы sql-query получить результат TRUE
Следовательно, если sql-server какая-либо строка этого подзапроса notin возвращает NULL, весь NOT sql-statement IN оператор будет оценивать sql-syntax либо FALSE, либо NULL, и sql-select никакие записи не будут вернулся
sql
sql-server
notin
НЕ В ПРОТИВ НЕ СУЩЕСТВУЕТ
Мы используем файлы cookies для улучшения работы сайта. Оставаясь на нашем сайте, вы соглашаетесь с условиями использования файлов cookies. Чтобы ознакомиться с нашими Положениями о конфиденциальности и об использовании файлов cookie, нажмите здесь.