gpt4 book ai didi

mysql - 同表中父子关系的分层数据连接

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

我有下表:

Id  ParentId  Weight
1 1 0
2 1 10
3 2 5

ParentId 引用同一个表的Id。如何查询该表,以便将其自身连接起来,将第三列的累积权重相加?

例如,如果我想知道 Id 2 的累计重量,则结果将返回 15 (Id2 + Id3 = 15),因为第 3 项的父项是 2。如果我想知道第 3 项的累计重量,它将返回 5,因为没有记录具有项目 3 的父 ID。

本质上,如果我正在查询的记录有一个子记录,我想添加数据的子记录序列并返回一个结果。

这是否可以一次性完成数据库,或者我是否必须循环遍历整个记录集才能找到匹配项?

最佳答案

看看this article 。如果您的表不经常更新,您可以稍微修改一下他们的 GenericTree 过程,它会生成所有行的所有路径(并在每次向表中插入记录或更新 ParentId< 时调用它)/code> 列),将此数据存储到一个新表中,然后您可以使用简单查询执行所需的所有任务。就我个人而言,我最终得到以下表结构:

CREATE TABLE `tree_for_my_table` (
`rootID` INT(11) NOT NULL, // root node id
`parentID` INT(11) NOT NULL, // current parent id
`childID` INT(11) NOT NULL, // child id (direct child of the parent)
`level` INT(11) NOT NULL, // how far child is from root
PRIMARY KEY (`rootID`, `parentID`, `childID`),
UNIQUE INDEX `childID` (`childID`, `level`)
)

即使对于相当大的my_table,为该表填充数据也不会花费太长时间。

关于mysql - 同表中父子关系的分层数据连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6018095/

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