2017-01-02 146 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,查詢仍然可以工作。因此,你可以添加更多的代碼。