2011-05-09 24 views
0

假设我有表Users, RolesUserRoles(关联)。然后,我想创建一个带有参数userid的存储过程以返回该特定用户的所有角色。但是,如果UserId是1(特殊Id),则应返回所有角色。存储过程中的SQL查询;创建一个带条件的查询特殊参数

我对SP查询应该是这样的没有特殊条件:

SELECT r.* 
FROM Roles 
INNER JOIN UserRoles ur ON r.Id = ur.RoleId 
WHERE ur.UserId = @userId; 

我将如何改变这个查询,以满足我想要的东西?或者,这可能是单独一个查询吗?我不想使用IF..ELSE并使用2个查询。

欢迎任何评论。

回答

3

你好,这将返回所有用户角色时@userId = 1

SELECT r.* 
FROM Roles 
INNER JOIN UserRoles ur 
    ON r.Id = ur.RoleId 
WHERE ur.UserId = @userId 
    OR @userId = 1