猿问

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

我认为答案是否定的,但是我很喜欢它,任何人都可以深入了解如何在SQL(MySQL)中将树结构爬网到任何深度,而只需一个查询


更具体地说,给定一个树形结构的表(id,数据,数据,parent_id)和表中的一行,是否有可能获得所有后代(子代/孙代/等等),或者所有祖先(父代/祖父母) / etc),而不用单个查询知道它会走多远?


还是使用某种递归需求,在这里我不断进行更深入的查询,直到没有新结果为止?


具体来说,我使用的是Ruby和Rails,但我猜这不太相关。


ABOUTYOU
浏览 429回答 3
3回答

HUX布斯

我之前遇到过这个问题,并且有一个古怪的想法。您可以在每个记录中存储一个字段,该字段是直接祖先的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"使祖先列保持最新状态可能比给您带来更多麻烦,但这对任何数据库都是可行的解决方案。
随时随地看视频慕课网APP

相关分类

MySQL
我要回答