Я пытаюсь понять запрос, который имеет внешнее соединение и ведет себя не так, как я ожидал.
Сценарий таков: у меня SQL, который выглядит примерно так:
with x as (
select id
from a
),
y as (
select id
from b
)
select x.id
from x
full outer join y on x.id = y.id
where (x.id is null or y.id is null)
Теперь предположим, что в таблице или таблице b нет нулевых идентификаторов, так как я проверял их по отдельности.
Если это так, то как вышеприведенное SQL возвращает строки с нулевыми значениями в x.id, когда в проверенном нами x cte не было возвращено нулевых значений для идентификатора? Но если я заменю полное внешнее соединение на левое, то не будет возвращенных строк.
Это сценарий, с которым я имею дело и пытаюсь понять. Это может быть из-за моей неосведомленности о том, как работает внешнее соединение.
Спасибо