如果没有角色Admin,请不要显示数据

时间:2014-08-05 09:46:01

标签: mysql sql

我有3对多对多的表。任何用户都可以拥有多个角色,我不想显示具有角色='管理员的用户,问题是,如果它有多个角色,则会显示。

[User]      [Role]    [UserRole]
UserId      RoleId      UserId
FirstName   RoleName    RoleId
LastName

是的,我没有这个查询SELECT FirstName, LastName, RoleName FROM User JOIN UserRole ON UserRole.UserId = User.UserId JOIN Role ON Role.RoleId = UserRole.RoleId WHERE RoleName != 'Admin'

实施例: 用户 A 的角色为管理员经理,我的查询会显示经理,但我不想显示任何有角色的用户的管理

1 个答案:

答案 0 :(得分:3)

您可以使用子选择来执行此操作:

SELECT FirstName, LastName, RoleName 
FROM User 
INNER JOIN UserRole 
ON UserRole.UserId = User.UserId 
INNER JOIN Role 
ON Role.RoleId = UserRole.RoleId 
WHERE User.UserId NOT IN 
    (SELECT UserId
     FROM UserRole AS ur
     WHERE ur.RoleId = (SELECT RoleId FROM Role AS rn WHERE rn.RoleName = 'Admin')
    )

http://sqlfiddle.com/#!2/aadae3/2