以下是我的案例:
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个表中的所有行并处理结果以获取值,但这非常糟糕。
答案 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)
这假设a
和b
中的列相同。否则,您需要指定正确的列集。