繁体   English   中英

SQL:内部连接的连接

[英]SQL : Join of inner join

我是 SQL 的初学者。 我有 3 个表(A、B 和 C),我只想提取属于 B 或 C 的 A 部分。

这是我要提取的图像(红色): 在此处输入图像描述

我知道 A 和 C 之间的交集是通过以下方式获得的:

A inner join C on #the keys

A和B之间:

A inner join B on #the keys

我的问题是:如何加入/添加这两个内部联接?

我会使用exists

select . . . 
from a
where exists (select 1 from b where b.? = a.?) or
      exists (select 1 from c where b.? = a.?);

如果您想要所有表中的列,请使用left join并使用where子句:

select . . .
from a left join
     b
     on . . . left join
     c
     on . . .
where c.? is not null or b.? is not null;

我终于找到了怎么做……而且非常简单快捷:

SELECT ... FROM A
INNER JOIN B ON ....

UNION

SELECT ... FROM A 
INNER JOIN C ON ....

你说对了。 顺便说一句,我认为你的图片不正确。 如果您要查找属于 A 的一部分和属于 B“OR”C 的一部分的记录,则圆 B 和 C 应该没有交集。 您改为绘制属于 A 的一部分和 B “AND” C 的一部分的记录。 如果绘制正确,您会清楚地看到最终的并集结果。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM