Не существует в подзапросе - PullRequest
0 голосов
/ 11 апреля 2019

У меня есть временная таблица, которая содержит список Individual_ref, и у меня есть другая таблица с именем «Email», которая содержит Individual_ref, и столбец электронной почты в нем. Я хочу выяснить, что Individual_ref во временной таблице не существует в таблице электронной почты.

Ниже приведен мой запрос, который не дает искомого результата.

select t.ind_ref from #temp_email t
where t.ind_ref  not in (SELECT EM.INDIVIDUAL_REF FROM EMAIL EM )

Ответы [ 2 ]

2 голосов
/ 11 апреля 2019

Кажется, INDIVIDUAL_REF имеет нулевые значения, поэтому в этом случае NOT EXISTS сделает этот трюк:

select t.ind_ref
from #temp_email t
where not exists (select 1 from email e where e.INDIVIDUAL_REF = t.ind_ref);

NOT IN завершится неудачей, если подзапрос вернет значение null.Таким образом, у вас было бы два способа, один из которых - фильтровать подзапрос с IS NOT NULL или использовать NOT EXISTS напрямую.

1 голос
/ 11 апреля 2019

Убедитесь, что ни одно из значений Individual_Ref в таблице электронной почты не является нулевым, потому что, когда мы используем не во внешнем запросе для поиска несоответствующих значений из внутреннего запроса, любое значение как нулевое во внутреннем запросе может привести к полному результату быть нулевым. Я предлагаю использовать предложение where во внутреннем запросе as (где индивидуальный_реф не равен нулю).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...