【发布时间】:2018-04-19 23:42:21
【问题描述】:
我创建了一个名为“net”的表,并像这样插入了值。
id name parent
--------------------------------------
1 fruits 0
2 Apple 1
3 Orange 1
4 Grape 2
5 Green Apple 2
6 Red Apple 4
我想让孩子“6”的所有父母。请帮帮我
我期待的结果,过滤数据时,id=6,它会产生我期待的结果。
lv1 lv2 lv3
--------------------------------------
4 2 1
或者像这样
id name parent
--------------------------------------
4 Grape 2
2 Apple 1
1 fruits 0
【问题讨论】:
-
您可以通过使用CTE(通用表表达式)实现递归,它是实现递归的工具。 here 是一个可能对您有用的示例。
-
我不认为你可以在单个查询中做到这一点(除非,也许,你有一个固定的 - 和低 - 树深度的限制)。您也许可以使用存储过程来返回所需的表,如here 所述。此外,请参阅this article,了解在 MySQL 中存储分层数据的方法。您可能会发现嵌套集模型比您当前的表格设计更符合您的要求。