对不起,这个标题很笼统,但我不知道如何用几句话来解释。 我有一个 user_role 表,它是使用数据库/jdbc 在 tomcat 中管理领域的经典结构的一部分。 是这样的:
userid | roleid user1 | role1 user1 | role2 user2 | role2 user2 | role3
如何在 mysql 中编写查询(如果可能的话)以获得如下结果:
| role1 | role2 | role3 | user1 | x | x | | user2 | | x | x |
提前致谢
干杯
马特奥
最佳答案
从 Sumit 的报价中简化
select
ur.userid,
max( case when ur.roleid = 'role1' then 'X' else ' ' end ) as role1,
max( case when ur.roleid = 'role2' then 'X' else ' ' end ) as role2,
max( case when ur.roleid = 'role3' then 'X' else ' ' end ) as role3
from
UserRoles ur
group by
ur.userid
现在,如果您想要用户的真实姓名并有相应的 USER 表,请加入该表以获取姓名。
select
u.userName,
max( case when ur.roleid = 'role1' then 'X' else ' ' end ) as role1,
max( case when ur.roleid = 'role2' then 'X' else ' ' end ) as role2,
max( case when ur.roleid = 'role3' then 'X' else ' ' end ) as role3
from
UserRoles ur
JOIN Users u
on ur.userid = u.userid
group by
ur.userid
关于mysql - 如何编写 MySQL 查询以获得此结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42201330/