2011-05-09 22 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