0

这是我的情况:

  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 个表中的所有行并处理结果以获取值,但这真的很糟糕。

4

1 回答 1

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)

这假定 和 中的列a相同b。否则,您需要指定正确的列集。

于 2013-07-08T14:09:25.783 回答