SELECT T2.id, T2.name
FROM (
SELECT
@r AS _id,
(SELECT @r := parent_id FROM t_department WHERE id = _id) AS parent_id,
@l := @l + 1 AS lvl
FROM
(SELECT @r := #{id}, @l := 0) vars,
t_department h
WHERE @r <> 0) T1
JOIN t_department T2
ON T1._id = T2.id
// and dept_type=2 (加上这个返回指定部门父节点(只返回一条),不加默认查所以有的父节点)
ORDER BY T1.lvl DESC

该SQL查询用于从t_department表中检索部门的层级结构,以_id为起点,返回所有上级直到根节点。通过变量@r和@l跟踪当前部门的ID和层级级别,并按层级级别降序排序。如果添加条件`and dept_type=2`,则只返回指定类型的父节点。
7812

被折叠的 条评论
为什么被折叠?



