2016-04-11 63 views
0

我在这里写一些伪sql(独立于任何DBMS),只是为了看看这是否可能,以及您会建议哪些其他解决方案。有条件从sql查询

select 
    sb.field 
from 
    case 1 
     subquery1 as sb 
    case 2 
     subquery2 as sb 

这可能吗?如果没有,是否有任何解决方法使其工作?

谢谢

+0

与你的情况值(1,2)进行比较,看它适用与否?还是应该同时适用这两种情况? – trincot

+3

查看答案:http://stackoverflow.com/questions/646334/is-it-possible-to-use-a-case-statement-in-a-sql-from-clauses –

回答

0

从我理解你想要从动态表中选择。唯一的方法将是一个动态的SQL,我不建议。相反,您可以制作案例陈述,并为其中的每个案例编写查询。当然,那只有当你有合理数量的选择。

0

您可以在where子句中使用表达式来关闭某些子查询。大多数关系型数据库管理系统(RDBMS)将用where子句永远是假的来优化查询。这仅在两个子查询具有相同字段时才有效。

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> 
)