我是SQL的初学者。 我有3个表(A,B和C),我只想提取A的一部分,即B或C的一部分。
我知道A和C之间的交集是通过:
A inner join C on #the keys
以及A和B之间:
A inner join B on #the keys
我的问题是:如何联接/添加这两个内部联接?
答案 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。如果你画得正确,你会清楚地看到最终的联合结果。