SQL:内部联接的联接

时间:2019-04-30 08:15:09

标签: sql join

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

这是我要提取的图像(红色): enter image description here

我知道A和C之间的交集是通过:

A inner join C on #the keys

以及A和B之间:

A inner join B on #the keys

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

3 个答案:

答案 0 :(得分:0)

我会使用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;

答案 1 :(得分:-1)

我终于找到了该怎么做的方法...而且非常容易且快速:

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

UNION

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

答案 2 :(得分:-2)

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