Эта проблема возникла, когда я получил различное количество записей для идентичных запросов, один из которых использовал ограничение not in
where
, а другой - left join
. Таблица в ограничении not in
имела одно нулевое значение (неверные данные), в результате чего этот запрос возвращал количество записей 0. Я вроде понимаю, почему, но я мог бы использовать некоторую помощь, чтобы полностью понять концепцию.
Проще говоря, почему запрос A возвращает результат, а B - нет?
A: select 'true' where 3 in (1, 2, 3, null)
B: select 'true' where 3 not in (1, 2, null)
Это было на SQL Server 2005. Я также обнаружил, что вызов set ansi_nulls off
заставляет B вернуть результат.