角色-用戶關係表 roles:
id | role_id | role_name
1 | 1 | 超級管理員
2 | 1 | 管理員
3 | 1 | 系統管理員
4 | 2 | 高級會員
5 | 3 | 普通會員
6 | 4 | 游客
SELECT role_id, GROUP_CONCAT(role_name) AS roles
FROM roles
GROUP BY role_id;
結果:
role_id | roles
1 | 超級管理員,管理員,系統管理員
2 | 高級會員
3 | 普通會員
4 | 游客
-- 自定義分隔符
GROUP_CONCAT(role_name SEPARATOR ' | ')
-- 去重
GROUP_CONCAT(DISTINCT role_name)
-- 排序後合併
GROUP_CONCAT(role_name ORDER BY role_name DESC)
-- 限制長度 (配合 group_concat_max_len)
SET SESSION group_concat_max_len = 10000; -- 默認 1024 字節
LISTAGG(role_name, ',') WITHIN GROUP (ORDER BY role_name)WM_CONCAT(role_name)(非官方、不推薦)STRING_AGG(role_name, ',')STRING_AGG(role_name, ',') (2017+) / FOR XML PATH 舊版group_concat_max_len 可能截斷,按需調大。(role_id, role_name) 可避免臨時表排序。作者:yipbxx