2012-09-25 72 views
2

是否有可能使用in命令基於case語句SQL陳述基於case語句

我已經試過這樣的事情

@Id int 

Select * 
From Table 
Where StatusId in(case when Id =1 then 1 else 1,3 end) 

Select * 
    From Table 
    Where StatusId in case when Id =1 then (1) else (1,3) end 

任何想法! !

回答

3

不,你需要以不同的方式來解決這個問題:

Where (Id = 1 and StatusId in (1)) or (Id <> 1 and StatusId in (1, 3)) 

這種模式的變化是可能的。

+0

這個問題經常出現,在SQL或SQL Server標記wiki中確實應該鏈接到這些類型的問題。請注意自己......無論如何+1! – LittleBobbyTables

2

爲了您的例子,你可以簡單地做:

where StatusId = 1 or (Id <> 1 and StatusId = 3) 
-1

在MySQL這樣的查詢工作:

Select * from 
Table 
where case when Id = 1 then StatusId = 1 
    else StatusId in (1,3) end; 

試試這個,讓我知道,如果它的工作,感謝

+0

這個問題的標籤是'sql-server-2008',而不是'mysql'。 – LittleBobbyTables

+0

是的..但我沒有得到sql-server-2008來驗證它是否工作。通過mysql檢查它。 – kasi

+0

此查詢不適用於SQL Server,這是用戶所要求的。 – LittleBobbyTables