2014-02-25 106 views
0

嗨我寫的mysql/oracle數據庫查詢,支持選擇所有的條款我的查詢是這樣的MySQL的條件裏面IN子句

SELECT * FROM country 
WHERE 
country_id in(IF('test' = 'test',(1,2,3),true)) 

如果條件(「測試」 =「測試」)爲真那麼它應該火查詢像

SELECT * FROM country WHERE country_id in(1,2,3) 

否則它應該火查詢

SELECT * FROM country WHERE country_id in(true) 
+0

好吧那有什麼意義? – Deepak

+1

任何問題或疑問?你只是想讓我們知道嗎? – Fabio

+0

有什麼感覺:'in(true)'? –

回答

4

您可以使用test可變這裏,如果test1 = test2然後country_id將在(1,2,3)否則就沒有限制了country_id

SELECT * FROM country 
WHERE ((test1 = test2 and country_id in(1,2,3))or 
     test1 <> test2) 
+0

嘿,它不在ORACLE工作 –

+0

它在'ORACLE'很好。看看http://sqlfiddle.com/#!4/6d28a/2 – Hamidreza

3

你可以用基本的布爾做到這一點邏輯。你在做什麼就相當於:

SELECT * 
FROM country 
WHERE country_id in (1,2,3) or 'test' <> 'test'; 

(注:我不'test'測試爲NULL,因爲它是一個文本值如果這是真的,可以採取一個NULL值的變量,你必須要考慮到這一點爲好)