select r.id,r.name,r.role_level,r.is_del, group_concat(rm.menu_id SEPARATOR ',') as menuIds, concat( '[', group_concat(get_json_object('userId',ur.user_id,'name',du.user_name,'mobile',mobile)) ,']') as userIds from role r left join role_menus rm on rm.role_id = r.id left join user_roles ur on ur.role_id = rm.role_id left join djd_user du on ur.user_id = du.user_id where r.id = 1678361105340755969 group by r.id;
时间: 2024-04-11 10:28:27 浏览: 110
这是一个SQL查询语句,用于从表中检索与特定角色ID相关的数据。它联接了多个表,并使用group_concat和get_json_object函数对数据进行聚合和处理。具体的查询逻辑如下:
```
SELECT r.id, r.name, r.role_level, r.is_del,
GROUP_CONCAT(rm.menu_id SEPARATOR ',') AS menuIds,
CONCAT(
'[',
GROUP_CONCAT(
GET_JSON_OBJECT('userId', ur.user_id, 'name', du.user_name, 'mobile', mobile)
),
']'
) AS userIds
FROM role r
LEFT JOIN role_menus rm ON rm.role_id = r.id
LEFT JOIN user_roles ur ON ur.role_id = rm.role_id
LEFT JOIN djd_user du ON ur.user_id = du.user_id
WHERE r.id = 1678361105340755969
GROUP BY r.id;
```
该查询将返回一个包含以下列的结果集:id、name、role_level、is_del、menuIds和userIds。其中menuIds是以逗号分隔的菜单ID列表,userIds是一个包含用户ID、姓名和手机号的JSON数组。这些结果是根据指定的角色ID进行筛选和聚合的。
阅读全文