有科室表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