为了账号安全,请及时绑定邮箱和手机立即绑定

是否可以通过单个查询在MySQL中查询树结构表到任何深度?

是否可以通过单个查询在MySQL中查询树结构表到任何深度?

ABOUTYOU 2019-12-11 16:09:16
我认为答案是否定的,但是我很喜欢它,任何人都可以深入了解如何在SQL(MySQL)中将树结构爬网到任何深度,而只需一个查询更具体地说,给定一个树形结构的表(id,数据,数据,parent_id)和表中的一行,是否有可能获得所有后代(子代/孙代/等等),或者所有祖先(父代/祖父母) / etc),而不用单个查询知道它会走多远?还是使用某种递归需求,在这里我不断进行更深入的查询,直到没有新结果为止?具体来说,我使用的是Ruby和Rails,但我猜这不太相关。
查看完整描述

3 回答

?
HUX布斯

TA贡献1876条经验 获得超6个赞

我之前遇到过这个问题,并且有一个古怪的想法。您可以在每个记录中存储一个字段,该字段是直接祖先的ID一直串联到根的串联字符串。


想象一下,您有这样的记录(缩进意味着层次结构,数字是id,祖先。


1,“ 1”

2,“ 2,1”

5,“ 5,2,1”

6,“ 6,2,1”

7,“ 7、6、2、1”

11,“ 11,6,2,1”

3,“ 3,1”

8,“ 8、3、1”

9,“ 9,3,1”

10,“ 10,3,1”

然后选择id:6的后代,只需执行此操作


SELECT FROM table WHERE ancestors LIKE "%6,2,1"

使祖先列保持最新状态可能比给您带来更多麻烦,但这对任何数据库都是可行的解决方案。




查看完整回答
反对 回复 2019-12-12
  • 3 回答
  • 0 关注
  • 426 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信