发布于 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

相关文章

©2020 edoou.com   京ICP备16001874号-3