现有一张部门表,表中包含部门id,父级部门ids,ids由该部门的多个上级部门id组成,中间用逗号隔开,现要查询出每个部门的部门全称,并且每个父部门之间用 斜杠拼接。
-- 部门名全称 从父部门到子部门中间用 / 拼接
-- dept_id :部门id ancestors: 父级部门ids dept_name: 部门名 ,dept_rank:部门等级
SELECT
d.dept_id,
CONCAT(d.ancestors,',',d.dept_id) as dept_all_id,
CONCAT(GROUP_CONCAT( p.dept_name ORDER BY p.dept_rank asc SEPARATOR '/' ) , '/' , d.dept_name ) as dept_all_name
FROM
sys_dept d
JOIN sys_dept p ON FIND_IN_SET( p.dept_id, d.ancestors ) > 0
GROUP BY
d.dept_id