使用基于case语句的SQL IN语句

时间:2012-09-25 14:07:50

标签: sql sql-server-2008

是否可以根据案例陈述使用in命令

我尝试过这样的事情

@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 个答案:

答案 0 :(得分:3)

不,你需要以不同的方式解决这个问题:

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

这种模式的变化是可能的。

答案 1 :(得分:2)

对于您的示例,您可以这样做:

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

答案 2 :(得分:-1)

在MySQL中,这样的查询有效:

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

试试这个,让我知道它是否有效,谢谢