Mysql 如果没有管理员角色,则不显示数据
我有3张多对多关系表。任何用户都可以有多个角色,我不想显示角色为'Admin'的用户,问题是如果它有多个角色,它将被显示Mysql 如果没有管理员角色,则不显示数据,mysql,sql,Mysql,Sql,我有3张多对多关系表。任何用户都可以有多个角色,我不想显示角色为'Admin'的用户,问题是如果它有多个角色,它将被显示 [User] [Role] [UserRole] UserId RoleId UserId FirstName RoleName RoleId LastName 对不对我有这个查询从UserRole上的User JOIN UserRole中选择FirstName、LastName、RoleName。UserId=User.Use
[User] [Role] [UserRole]
UserId RoleId UserId
FirstName RoleName RoleId
LastName
对不对我有这个查询从UserRole上的User JOIN UserRole中选择FirstName、LastName、RoleName。UserId=User.UserId在Role.RoleId=UserRole.RoleId中加入角色RoleName!='管理员“
例如:
用户A具有角色Admin和Manager,我的查询将显示Manager,但我不想显示任何具有角色Admin的用户。您可以通过子选择来执行此操作:
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')
)
您可以使用子选择来执行此操作:
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')
)
您可以使用子选择来执行此操作:
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')
)
您可以使用子选择来执行此操作:
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')
)
提供了一个答案,但是,如果你还在挣扎,考虑一下这个简单的两步过程:1。如果您还没有这样做,请提供适当的DDL(和/或SQLFIDLE),以便我们可以更轻松地复制问题。2.如果你还没有这样做,提供一个与步骤1中提供的信息相对应的期望结果集。已经提供了一个答案,但是,如果你还在挣扎,考虑下面这个简单的两步行动:1。如果您还没有这样做,请提供适当的DDL(和/或SQLFIDLE),以便我们可以更轻松地复制问题。2.如果你还没有这样做,提供一个与步骤1中提供的信息相对应的期望结果集。已经提供了一个答案,但是,如果你还在挣扎,考虑下面这个简单的两步行动:1。如果您还没有这样做,请提供适当的DDL(和/或SQLFIDLE),以便我们可以更轻松地复制问题。2.如果你还没有这样做,提供一个与步骤1中提供的信息相对应的期望结果集。已经提供了一个答案,但是,如果你还在挣扎,考虑下面这个简单的两步行动:1。如果您还没有这样做,请提供适当的DDL(和/或SQLFIDLE),以便我们可以更轻松地复制问题。2.如果您还没有这样做,请提供与步骤1中提供的信息相对应的所需结果集。哇,我尝试了not exist,但选择了firstname和lastname,忘记了ID。非常感谢。请在RoleWOW中的子选择中编辑RoleName我尝试了不存在,但选择了名字和姓氏,忘记了ID。非常感谢。请在RoleWOW中的子选择中编辑RoleName我尝试了不存在,但选择了名字和姓氏,忘记了ID。非常感谢。请在RoleWOW中的子选择中编辑RoleName我尝试了不存在,但选择了名字和姓氏,忘记了ID。非常感谢。请在子角色中编辑从角色中选择角色名称