gpt4 book ai didi

sql - 如何仅显示多个表中至少一个匹配的记录?

转载 作者:行者123 更新时间:2023-12-04 20:23:07 26 4
gpt4 key购买 nike

我有几张 table 。我想加入反对。我只想查看至少在其中一张表上匹配的记录

insert into foo values
(1),
(2),
(3),
(4),
(5),
(6),
(7),
(8);

insert into a values
(1),
(2),
(3);

insert into b values
(3),
(4),
(5),
(6);

所需的输出:
id      id      id
1 1 (null)
2 2 (null)
3 3 3
4 (null) 4
5 (null) 5
6 (null) 6

通常我会使用 WHERE EXISTS(例如:下面)来做到这一点,但这在 SparkSQL 中不受支持。实现这一目标的最高效方法是什么?我宁愿依靠我的联接来确定结果,而不是过滤结果集。此外,我不仅限于使用 SparkSQL,数据帧 API 也很棒。
select * 
from foo
left join a on foo.id = a.id
left join b on foo.id = b.id
where exists (select 1 from a x where foo.id = x.id)
or exists (select 1 from b x where foo.id = x.id)
;

最佳答案

您需要 FULL OUTER JOINLEFT JOIN带过滤器:

select f.*, a.*, b.*
from foo f full outer join
a
on a.id = f.id full outer join
b
b.id = f.id
where a.id is not null or b.id is not null;

关于sql - 如何仅显示多个表中至少一个匹配的记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52103578/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com