このクエリを単純化する方法を知りたいと思っていました。ここ( http://sqlfiddle.com/#!3/2789c/4 )には完全な例があります
SELECT distinct (R.[roleId])
FROM [Role] R
LEFT JOIN [userRole] U ON R.[roleId] = U.[roleId]
WHERE R.RoleID NOT IN(
SELECT [roleId]
from [dbo].[userRole]
WHERE userId = 2)
特定のユーザーに割り当てられていないすべてのロールを取得したい。内部選択は消去できると思います。
更新 1
あなたの多大な助けの後、私は1つしか使えませんでしたSELECT
http://sqlfiddle.com/#!3/2789c/87
SELECT R.[roleID]
FROM [Role] R
LEFT JOIN [userRole] U
ON R.[roleID] = U.[roleID] AND U.userId = @userID
WHERE U.userId IS NULL