在mysql中连接三张表ABC,并返回A中的共同点。
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在mysql中连接三张表ABC,并返回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
另一答案
你想要一个 left join
始于 A
然后再进行一些过滤。
select . . .
from a left join
b
on . . . left join
c
on . . .
where b.? is not null or c.? is not null;
The ?
中使用的任一列。join
或各表的主键。
以上是关于在mysql中连接三张表ABC,并返回A中的共同点。的主要内容,如果未能解决你的问题,请参考以下文章
mysql中多表连接(不使用join )为啥 超过三张表就报错?