我有一个SQL问题,我还没有找到解决方案,我试图做的是一个过程的where子句,其中userID变量可以包含有效的userID或-1来指示所有用户。< / p>
但是我坚持在where子句的这一部分:
AND usertable.userid = CASE WHEN @user = -1
THEN
ELSE
@user
END
我不知道如何处理-1来说出选择所有用户
由于
答案 0 :(得分:5)
也许以下方法可行:
SELECT whatever
FROM wherever
WHERE something = somethingelse AND
usertable.userid = CASE @user
WHEN -1 THEN usertable.userid
ELSE @user
END
分享并享受。
答案 1 :(得分:5)
您可以更改此类子句以返回所有用户...
AND ( @user = -1
OR usertable.userid = @user
)
不需要这样的案例陈述......
答案 2 :(得分:1)
你能否把整个思想放在if语句中......
像
这样的东西if (@userId = -1)
SELECT * FROM usertable
else
SELECT * FROM usertable WHERE Id = @userId
答案 3 :(得分:1)
usertable.userid = COALESCE(NULLIF(@user, -1), usertable.userid)