按第三个表中的条件查询两个表

时间:2013-07-08 13:59:33

标签: sql database postgresql jdbc

以下是我的案例:

  table a
  table b
  table c (type int)

if c.type = 1 select all rows in table a
if c.type = 2 select all rows in table b

目前我的解决方案是查找3个表中的所有行并处理结果以获取值,但这非常糟糕。

1 个答案:

答案 0 :(得分:1)

您没有指定表之间的关系。表达式c.type表示行,而不是整个表。所以,我假设c.type = 1表示“存在c.type = 1”行。

此问题的解决方案是条件union all

select a.*
from tablea a
where exists (select 1 from tablec c where c.type = 1)
union all
select b.*
from tableb b
where exists (select 1 from tablec c where c.type = 2)

这假设ab中的列相同。否则,您需要指定正确的列集。