SELECT T1.lvl,T2.* #lvl 跟查询无限下级的level一样
FROM (
SELECT
@r AS _id, #变量取个别名
(SELECT @r := parent_id FROM sys_depart WHERE id = _id limit 1) AS parent_id, #limit 1不加会报错,因为子查询不允许有多个,我当时没加在navicat是没问题,但是项目里就报错! parent_id 你的父级id的字段 sys_depart 你的表名
@l := @l + 1 AS lvl # T1.lvl 的来历,没用可以不要!或者感觉看不懂可以取消了
FROM
(SELECT @r := '156532be0aa54d3ea1',@l := 0) vars, # @r := '9a61ebfffcc5430480fdd21245b1bf0c' 就是你要查的id,@l := 0 定义T1.lvl的初始值为0 没用可以取消不要
sys_depart h
WHERE parent_id <> 0) T1 #parent_id 你的父级id的字段 查询条件就是不等于0,可以根据自己业务做修改
JOIN sys_depart T2
ON T1.parent_id = T2.id
ORDER BY T1.lvl DESC;