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

我有一个简单的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

我正在尝试进行面包屑跟踪。因此,我有孩子的“身份证”,我想让所有可用的父母(重复链,直到我们达到0“家”)。可能有任意数量或子行达到无限深度。

目前,我正在为每个父母使用SQL调用,这很麻烦。SQL中有一种方法可以对一个查询执行全部操作吗?

回答:

从这里改编:

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'

以上是 在一个SQL查询中获取所有父行 的全部内容, 来源链接: utcz.com/qa/404097.html

回到顶部