当前位置: 首页 > 面试题库 >

获取递归父列表

越飞鸾
2023-03-14
问题内容

使用MySQL,我想从具有此类字段结构的表中返回父母列表。ID,PARENTID,NAME(标准的父子层次结构)。我想遍历树以返回所有“父母”的列表。

我意识到“嵌套集”可能是处理此问题的更好方法-但目前我无法更改数据的结构。我将来会希望这样做。当前-我的数据集实际上将包含一些深度级别-
没什么疯狂的……也许2-5,所以我的递归命中不应太“昂贵”。

我已经看过SQL Server获取父级列表中提出的解决方案-但这是mySQL中的语法炸弹…

有没有人举过一个例子?

@kevin-链接的thx-但我仍然收到错误。(“每个派生表必须具有它自己的别名”)

这就是我所做的(上面文章的语法修改形式-为了适应MySQL)-我显然错过了一些东西…

SELECT parents.*
FROM  (
    SELECT taskID,  task,  parentID,  0 as level
    FROM   tasks
    WHERE taskidID = 9147
    UNION ALL
    SELECT  taskID, task,  parentID,  Level + 1 
    FROM   tasks
    WHERE  taskID = (SELECT parentID FROM parents ORDER BY level DESC LIMIT 1)
    )

想法???

例:

ID      PARENTID    NAME
9146    0       thing1
9147    0       thing2
9148    9146        thing3
9149    9148        thing4
9150    0       thing5
9151    9149        thing6

查询“ thing3”的父级返回“ 9148,9146”

查询“ thing6”的父级返回“ 9149,9148,9146,0”


问题答案:

在此示例中,我们正在检查5个级别:

select 
    t1.parentid, t2.parentid, t3.parentid, t4.parentid, t5.parentid
from
    tableName t1
    left join tableName t2 on t1.parentid = t2.id
    left join tableName t3 on t2.parentid = t3.id
    left join tableName t4 on t3.parentid = t4.id
    left join tableName t5 on t4.parentid = t5.id
where
    t1.name = 'thing3'


 类似资料:
  • 我在做一些类似递归获取属性的事情 代码的问题是:它只下降了一级,我想知道如何使用反射自动获取所有属性?我刚刚编写了以下示例容器代码: 在主要方法中: 我希望得到: 我现在得到的结果是: 有人能帮我使用PrintProperties方法吗?非常感谢你。

  • 问题内容: 我的数据库看起来像(pligg cms,样本数据) 假设,如何获取芝加哥的顶级parentID,它应该是位置。 我是否在php中编写了递归函数,或者在mysql中可行? 问题答案: 该网站非常好地概述了在mysql和PHP中存储分层数据的不同方法。要回答您的问题,最简单的方法是使用php和递归。您可以使用其他方法,例如,不需要多个数据库查询。但是,在处理大量插入和更新时,此方法的实现可

  • 我想使用JOOQ递归地获取自引用表的父级和子级。 目标是直接在POJO中获取。 我没有在JOOQ留档或其他任何地方找到任何这样的例子,但我认为结合多集和递归JOOQ方法是可能的。https://www.jooq.org/doc/3.14/manual/sql-building/sql-statements/with-recursive-clause/https://www.jooq.org/doc

  • 问题内容: 我有以下查询和方法 与作为 我希望这个查询可以获取and >关系,但事实并非如此。假设I查询有两个运算符,Hibernate将执行1 + 2 * 2 = 5个查询 我猜这是因为我加入了operator 元素,但他们必须加入自己的行列。 我可以执行同时执行的HQL查询吗? 问题答案: 如果您知道树中只有两个级别,那么您是否考虑过加入更深的一个级别。像下面的东西?

  • 问题内容: 我有一个带有自我参照字段的模型,称为parent。模型: 序列化器: 现在,我要序列化区域的父级及其父级及其父级,直到父级为none。我发现了针对孩子而不是父母的递归序列化方法。我怎样才能做到这一点? 问题答案: 尝试在此处使用SerializerMethodField: 我不确定DRF是否有内置方法,但是您可以使用查询来获取所需的方法。

  • 问题内容: 我有一个Comment表,其中有一个CommentID和ParentCommentID。我正在尝试获取评论的所有子级的列表。到目前为止,这是我到目前为止尚未完成的测试。 2个问题: 有什么明显的方法可以改善这一点吗?(此外,也许还可以使用CTE在sql中创建视图。) 我怎么不能只给一个IEnumerable屈服呢? 无论如何,在这种情况下可以使用SelectMany吗? 问题答案: 我