【问题标题】:How to get all parents from child id如何从孩子ID中获取所有父母
【发布时间】: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 中存储分层数据的方法。您可能会发现嵌套集模型比您当前的表格设计更符合您的要求。

标签: mysql sql


【解决方案1】:

你可以用这个:

SELECT T2.id, T2.name, T2.parent
FROM (
    SELECT
        @r AS _id,
        (SELECT @r := parent FROM table1 WHERE id = _id) AS parent,
        @l := @l + 1 AS lvl
    FROM
        (SELECT @r := 6, @l := 0) vars,
        table1 h
    WHERE @r <> 0) T1
JOIN table1 T2
ON T1._id = T2.id 
where T2.id<>6
ORDER BY T1.lvl

SQL HERE

【讨论】:

  • 按 T1.lvl 排序
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-29
  • 2022-01-27
  • 2022-01-15
  • 2022-11-24
相关资源
最近更新 更多