背景: 一个部门下的排序是从1开始的,所以在每一个层级又有新的排序
这里给每个父层级加赋值一个顺序id,在这个层级再使用表中的排序字段排序。
例子:
with recursive sub_dept as (
select dept_id, parent_id,dept_sort,0 as level from t_dept t
# where t.dept_id = 1
union all
select t1.dept_id,t1.parent_id,t1.dept_sort, sub.level+1 from t_dept
inner join sub_dept sub on t1.parent_id=sub.dept_id
)
select dept_id,parent_id,dept_sort from sub_dept
order by level, dept_sort