case when then 后面能跟多个int 值吗?

stone601287990 2015-09-20 02:00:15
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?
...全文
841 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
xqchenxue2 2015-09-21
  • 打赏
  • 举报
回复
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);
or (reward.status in (3,4) and reward.works_user_id <>278);
卖水果的net 版主 2015-09-20
  • 打赏
  • 举报
回复
1# 的方法很好,可以考虑一下把两个条件用or 连接一下。 PS: works_user_id 列如果有 NULL 值,要注意一下。
专注or全面 2015-09-20
  • 打赏
  • 举报
回复
换个思路 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;

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧