发布于 3年前
MySQL 用户变量查找层次数据库任意路径(查询无限分类路径)
应用场景
层次数据库,数据库结构类似于这种,也是层次数据常用的写法了
create table t(
id int primary key comment 'id',
parent_id int comment 'parent_id'
)
目标是查找一个一个节点的全路径,例如
id ,parent_id
1, 0
2, 1
3, 1
4, 1
5, 2
输入参数 5 能输出
5
2
1
SQL
SELECT T2.id
FROM (
SELECT @r AS _id,
(SELECT @r := parent_id FROM t WHERE id = _id) AS parent_id,
@l := @l + 1 AS lvl
FROM (SELECT @r := 5, @l := 0) vars,
t h) T1
JOIN t T2 ON T1._id = T2.id