存储过程中的SQL查询;使用条件特殊参数创建查询

时间:2011-05-09 04:30:00

标签: sql sql-server stored-procedures

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

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

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

如何更改此查询以满足我的需求?或者单独一个查询是否可以这样做?我不想使用IF..ELSE并使用2个查询。

欢迎任何评论。

1 个答案:

答案 0 :(得分:3)

嗨,这将在@userId = 1

时返回所有用户角色
SELECT r.* 
FROM Roles 
INNER JOIN UserRoles ur
  ON r.Id = ur.RoleId
WHERE ur.UserId = @userId 
  OR @userId = 1