mysql8.0如何利用递归把某个字段的父级和子级以分隔符拼接在一起

有科室表host_dept字段如下:

dept_id(部门id)   dept_name(部门名称)  parent_id(父级的部门id)   level(部分级别 例:当前部门级别为2,则父级为1)

需求如下:一个医院有多个心理科分别属于不同部门(门诊部门、住院部门等)需要将每个心理科的父级也展示出来用于区分

WITH RECURSIVE tree_cte as
(
select d.*,d.dept_id as deptId from hos_dept d where d.dept_name='心理科'
UNION ALL
select t.*,tcte.deptId
from hos_dept t inner join tree_cte tcte on t.dept_id = tcte.parent_id
)
SELECT deptId,GROUP_CONCAT(dept_name order by level asc separator '/') as deptNam from tree_cte group by deptId

结果:

 如果门诊部门、行政部门...也有父级 也会拼接到前面(医院/门诊部门/心理科)

关于mysql8.0递归用法可以参考  https://www.cnblogs.com/blwy-zmh/p/13895299.html

posted @ 2020-10-29 10:26  尘、世美  阅读(1522)  评论(0编辑  收藏  举报