假设我在 MySQL 数据库中有三个这样的表。
1. User(userId,name)
2. Role(roleId,role)
3. UserRoleMap(userRoleId,userId,roleId)
一个用户可能有多个角色。
如果用户有多个role
,我必须选择一个首先出现的角色hierarchy(Pre-defined)
。层次结构的顺序是例如如果约翰有两个角色(管理员,用户),那么我的预期输出是:
1.Admin,2.Supervisor,3.User.
+----------+-----------+
|John |Admin | (John have two roles:User,Admin)
|Vishal |Supervisor | (Vishal have two roles:User,Supervisor)
在查询的最终结果中。我尝试了以下查询。
select user.name,
FIND_IN_SET(trim(role.role),'Admin,Supervisor,User') as 'roleIndex',
(case when(FIND_IN_SET(trim(role.role),'Admin,Supervisor,User')=1) then
'Admin'
else
case when(FIND_IN_SET(trim(role.role),'Admin,Supervisor,User')=2) then
'Supervisor'
else
case when(FIND_IN_SET(trim(role.role),'Admin,Supervisor,User')=3) then
'User'
end
end
end) as role
from
User user
inner join UserRoleMap userRole on user.userId = userRole.userId
inner join Role role on role.roleId = userRole.roleId
group by user.userId;
谢谢。每个答案将不胜感激。