在一个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' (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |