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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在mysql中连接三张表ABC,并返回A中的共同点。相关的知识,希望对你有一定的参考价值。

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

A
-------
ID, Name

B
-------
ID, ORG

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

enter image description here

请谁提供简单的连接查询

答案

我知道你想从 aid 可以在任何一个 bc.

这听起来像两个 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中的共同点。的主要内容,如果未能解决你的问题,请参考以下文章

hive sql 将两张表连接成为第三张表

mysql中多表连接(不使用join )为啥 超过三张表就报错?

MySQL中3表join流程分析

mysql啥时候使用子查询,啥时候使用表连接查询,关系多张表的时候该怎么查询

mysql三表联合查询

MySQL三表查询