gpt4 book ai didi

mysql - 关于自连接的sql问题

转载 作者:行者123 更新时间:2023-11-29 14:48:11 25 4
gpt4 key购买 nike

我对 MySQL 的 SQL 连接有疑问。

假设我有以下表 A 和父子关系。如何获取给定父 id 的所有子节点(包括子节点的子子节点直到叶节点)?

Table Achild id     parent id 1            12            13            14            25            38            9

从上表中,如果我们给出父级 (1),我必须进行查询,以便给定父级 id(1),它给出所有层次结构示例:

child id     parent id 1            12            13            14            25            3

限制之一是我无法更改数据模型,因为数据模型是 JBPM 数据库表(开源)我正在为子流程的 JBPM 图中的 ProcessInstancelog 表添加一些功能(对于每个扇出流程) .

最佳答案

您似乎希望能够选择一个父级,然后获取其所有子级,无论其在层次结构中的位置如何。

最有效的方法是使用反向关联表。其中每个子级都将与其父级、授予父级相关联,依此类推,直到到达树的根。

这显然意味着您必须在写入方面做更多工作来维护表,但这将使您免于查询表的复杂性。

示例

id       parent
1 0
2 1
3 1
4 2

反转表格

child     parent    level
2 1 1
3 1 1
4 2 1
4 1 2

这样,您就可以在查询中使用 (select child where Parent = 1) 进行子选择

关于mysql - 关于自连接的sql问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6404114/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com