select * from reward where reward.status in (case reward.works_user_id when 278 then 1+','+2 else 1+','+3 end);
status 是int类型,我想查询status in (1,2) or status in (1,3)
但是上面的SQL语句返回的结果有问题。请问怎么写这条SQL?
...全文
8414打赏收藏
case when then 后面能跟多个int 值吗?
select * from reward where reward.status in (case reward.works_user_id when 278 then 1+','+2 else 1+','+3 end); status 是int类型,我想查询status in (1,2) or status in (1,3) 但是上面的SQL语句返回的结果有问题。请问怎么写这条SQL?
int型最好加个isnull(value,default)
select * from reward where (isnull(reward.status,0) in (1,2) and isnull(reward.works_user_id,0) =278);
or (isnull(reward.status,0) in (3,4) and isnull(reward.works_user_id,0) <>278)
换个思路
select * from reward where reward.status in (1,2) and reward.works_user_id =278;
union all
select * from reward where reward.status in (3,4) and reward.works_user_id <>278;