Не используйте not in
с подзапросом.Он не возвращает строк, когда любое значение, возвращаемое подзапросом, равно NULL
.
Вместо этого используйте not exists
:
select x.CITY
from TBL_X x
where not exists (select 1
from tbl_y y
where y.CITY = x.CITY
);
Ваши запросы не эквивалентны,точно так же, как это не противоположности:
where x = y
where not (x = y)
В обоих этих пунктах отфильтровываются NULL
значения.