您好,欢迎来到二三四教育网。
搜索
您的当前位置:首页GROUP_CONCAT合并多行查询结果

GROUP_CONCAT合并多行查询结果

来源:二三四教育网
  • 1 菜单表


    menus
  • 2 资源表(管理不同类型的资源)

resources
  • 3 角色资源表


    role_resources
  • 4 角色表


    roles

基于以上四张表,需要实现的是查询菜单信息列表的同时获取到该菜单分配给哪些角色,如下图:

效果

四张表中资源表和角色资源表作为中间表,联结菜单表和角色表

  • 联表查询
SELECT 
    m.*, 
    c.name AS 'role' 
FROM menus AS m 
JOIN resources AS a ON a.detail_id = m.id 
JOIN role_resources AS b ON b.resource_id = a.id 
JOIN roles AS c ON c.id = b.role_id
联表查询

联表后获取到了角色信息,还需要将相同id的行进行合并

SELECT 
    m.*, 
    GROUP_CONCAT(DISTINCT(c.name)) AS 'groups'
FROM menus AS m 
JOIN resources AS a ON a.detail_id = m.id 
JOIN role_resources AS b ON b.resource_id = a.id 
JOIN roles AS c ON c.id = b.role_id
GROUP BY id
LIMIT 0, 10
最终效果

总结:

  • GROUP_CONCAT函数的作用将相同组的数据进行合并
  • GROUP_CONCAT函数需要与group by配合使用

Copyright © 2019- how234.cn 版权所有 赣ICP备2023008801号-2

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务