这是我的情况:
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 个表中的所有行并处理结果以获取值,但这真的很糟糕。
这是我的情况:
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 个表中的所有行并处理结果以获取值,但这真的很糟糕。
您没有指定表之间的关系。该表达式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
。否则,您需要指定正确的列集。