我在这里写了一些伪sql(独立于任何DBMS),只是为了看看这是否可能,以及你会建议的其他解决方案。
select
sb.field
from
case 1
subquery1 as sb
case 2
subquery2 as sb
这可能吗?如果没有,是否有任何解决方法使其工作?
由于
答案 0 :(得分:1)
您可以在where子句中使用表达式来关闭某些子查询。大多数RDBMS将优化远离查询的where子句始终为false。这仅在两个子查询具有相同字段时才有效。
SELECT <fields>
FROM (
SELECT <sub1> FROM table1 WHERE <expression which is true if you want sub1>
UNION
SELECT <sub2> FROM table2 WHERE <expression which is true if you want sub2>
)
答案 1 :(得分:0)
据我所知,您想从动态表中进行选择。唯一的方法是动态的SQL我不推荐。相反,您可以创建一个case语句并在那里为每个案例编写查询。当然,只有你有合理数量的选择。