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


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM