繁体   English   中英

多对多查询MySQL

[英]Many to many query MySQL

我有两个表:用户[id,电子邮件]和角色[id,名称],具有多对多连接表user_has_roles [user_id,role_id]。 我试图获取显示哪个用户具有特定角色的表,如果没有,则返回null(或0),类似于以下内容:

            | role 1 | role 2 | role 3
---------------------------------------
user1@email | 1      | null   | 1
user2@email | null   | null   | 1
---------------------------------------

非常感谢任何帮助。

select u.email, 
       case when sum(r.name = 'role 1') > 0 then 1 else null end as `role 1`,
       case when sum(r.name = 'role 2') > 0 then 1 else null end as `role 2`,
       case when sum(r.name = 'role 3') > 0 then 1 else null end as `role 3`
from users u
left join user_has_roles ur on ur.user_id = u.id
left join roles r on ur.role_id = r.id
group by u.email

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM