【发布时间】:2020-05-25 20:14:40
【问题描述】:
我正在尝试了解具有外部联接且行为不符合我预期的查询。
场景是我有类似这样的 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 上没有空 id,因为我已单独检查它们。
如果是这样,当我们检查了在 x cte 中没有为 id 返回空值时,上面的 SQL 怎么会返回在 x.id 中具有空值的行?但是,如果我将完整的外连接更改为左连接,则不会返回任何行。
这就是我正在处理并试图理解的场景。这可能是由于我对外部连接的工作原理缺乏了解。
谢谢
【问题讨论】:
-
请说明您使用的是哪个 RDBMS(显然不是 MySQL)