【发布时间】:2018-06-19 08:49:04
【问题描述】:
我有一个标准的嵌套类别树:
| id | parent_id | name |
+----+-----------+----------------+
| 1 | 0 | Category 1 |
| 2 | 0 | Category 2 |
| 3 | 0 | Category 3 |
| 4 | 1 | Category 1.1 |
| 5 | 1 | Category 1.2 |
| 6 | 2 | Category 2.1 |
| 7 | 2 | Category 2.2 |
| 8 | 7 | Category 2.2.1 |
现在我需要获取指定项目的最高父级,所以我这样做:
SELECT
cat.*
FROM
categories cat
LEFT JOIN
categories subCat
ON
subCat.parent_id = cat.id
AND cat.parent_id = 0
WHERE
subCat.id = 5;
如果 item 是一级子项,它工作正常,但 item 是二级子项(例如 8)我没有得到记录 - 怎么做?
这里是 SQlFiddle:http://sqlfiddle.com/#!9/5879bd/11
更新
这是一个真实的例子:http://sqlfiddle.com/#!9/6f1d1c/1
我想得到Xiaomi的父类别
【问题讨论】:
-
有了那个样本表数据,预期的结果是什么?
-
@jarlh 我更新了问题
-
您使用哪个版本的 MySQL?树的最大深度是否存在?如果是,是哪个?
-
@stickybit : MySQL 5.6,是的——树的最大深度为 3