2017-01-02 59 views
0

我有6个输入字段,其中2个是强制性的。其他4个字段是可选的,并且在表中不是空值。我必须将这6个值传递给游标查询。代码1,代码2,代码3在表中是相同的字段名称'X'。 如何将这些条件包含在where子句中?如果给出code1而其他则为null,则过滤条件应该包括X = code1。同样,如果给出code1和code2,则X = code1,code2。如果什么都没有给出,那么X就是所有的值,而不是从查询中消除的X过滤条件。如何在where语句中使用Case语句?

select p,q,r from a,b 
where a.f1=b.f2 
and a.X=code1 <<if only code1 is passed>> 
and a.X in (code1,code2) <<if both code1 and code2 are passed>> 

or 

select p,q,r from a,b 
where a.f1=b.f2 

<<if no value is passed>> 

请帮忙!

+0

在'WHERE'子句中使用MySQL'CASE'没有什么特别的好处,它在其他语言中的工作方式并不相同。 – Havenard

+0

添加一些示例表格数据和预期结果(以及格式化文本)。同时标记您正在使用的dbms。 – jarlh

回答

2

我想你想是这样的:

select p, q, r 
from a join 
    b 
    on a.f1 = b.f2 
where a.X in (code1, code2) ; 

如果code2NULL,查询仍然可以工作。因此,你可以添加更多的代码。