在mysql中连接三张表A、B、C,并返回A中的共同点。

问题描述:

我想把下面的三个表A、B、C连接起来,只返回表A的公共部分(阴影部分)。

A
-------
ID, Name

B
-------
ID, ORG

C
--------
ID, DEP

解决方法:

我知道你想从 a 其 id 可以在任何一个 b 或 c.

这听起来像两个 exists 子查询。

select a.*
from a
where 
    exists (select 1 from b where b.id = a.id)
    or exists (select 1 from c where c.id = a.id)

如果你还想从表b或表c中获取列,你可以使用两个 left joins 而不是 where 条件,确保至少有一个连接成功。

select a.*, b.org, c.dept
from a
left join b on b.id = a.id
left join c on c.id = a.id
where b.id is not null or c.id is not null

未经允许不得转载:芯片验证自学网-IC设计入门自学网站 » 在mysql中连接三张表A、B、C,并返回A中的共同点。

赞 (0) 打赏

觉得文章有用就打赏一下文章作者

微信扫一扫打赏