如何使用或条件在sql中连接3个表

时间:2017-07-09 14:13:33

标签: sql

我有3张桌子: 表1

  • 与table2的内连接;或者:
  • 与table3的内连接

查询:

select table1.x
from table1 right outer join
     table2
     on table1.x = table2.x right outer join
     table3
     on table1.x = table3.x

但我只能看到table2和table3中的x值

1 个答案:

答案 0 :(得分:1)

使用left join,而不是right join,以及适当的过滤条件:

select table1.x
from table1 left join
     table2
     on table1.x = table2.x left join
     table3
     on table1.x = table3.x
where table2.x is not null or table3.x is not null;

您可以考虑使用exists

来撰写此内容
select t1.*
from table1 t1
where exists (select 1 from table2 t2 where t2.x = t1.x) or
      exists (select 1 from table3 t3 where t3.x = t1.x);

这似乎是一种更自然的方式来实现您的逻辑 - 当xtable2中重复table3时,您不会得到重复。