加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

在一个SQL查询中获取所有父行

发布时间:2020-12-12 16:16:56 所属栏目:MsSql教程 来源:网络整理
导读:我有一个简单的MySQL表,它包含一个类别列表,级别由parent_id决定: id name parent_id---------------------------1 Home 02 About 13 Contact 14 Legal 25 Privacy 46 Products 17 Support 1 我试图做一个面包屑的踪迹.所以我有孩子的’id’,我想要所有可用
我有一个简单的MySQL表,它包含一个类别列表,级别由parent_id决定:
id  name    parent_id
---------------------------
1   Home        0
2   About       1
3   Contact     1
4   Legal       2
5   Privacy     4
6   Products    1
7   Support     1

我试图做一个面包屑的踪迹.所以我有孩子的’id’,我想要所有可用的父母(迭代链,直到我们达到0“家”).可能有任何数字或子行成为无限深度.

目前我正在为每个父级使用一个SQL调用,这是凌乱的.在SQL中有一种方法可以在一个查询上执行此操作吗?

解决方法

改编自 here:
SELECT T2.id,T2.name
FROM (
    SELECT
        @r AS _id,(SELECT @r := parent_id FROM table1 WHERE id = _id) AS parent_id,@l := @l + 1 AS lvl
    FROM
        (SELECT @r := 5,@l := 0) vars,table1 h
    WHERE @r <> 0) T1
JOIN table1 T2
ON T1._id = T2.id
ORDER BY T1.lvl DESC

@r:= 5行是当前页面的页码.结果如下:

1,'Home'
2,'About'
4,'Legal'
5,'Privacy'

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读