我認(rèn)為答案是否定的,但是我很喜歡它,任何人都可以深入了解如何在SQL(MySQL)中將樹結(jié)構(gòu)爬網(wǎng)到任何深度,而只需一個查詢更具體地說,給定一個樹形結(jié)構(gòu)的表(id,數(shù)據(jù),數(shù)據(jù),parent_id)和表中的一行,是否有可能獲得所有后代(子代/孫代/等等),或者所有祖先(父代/祖父母) / etc),而不用單個查詢知道它會走多遠(yuǎn)?還是使用某種遞歸需求,在這里我不斷進(jìn)行更深入的查詢,直到?jīng)]有新結(jié)果為止?具體來說,我使用的是Ruby和Rails,但我猜這不太相關(guān)。
3 回答

HUX布斯
TA貢獻(xiàn)1876條經(jīng)驗(yàn) 獲得超6個贊
我之前遇到過這個問題,并且有一個古怪的想法。您可以在每個記錄中存儲一個字段,該字段是直接祖先的ID一直串聯(lián)到根的串聯(lián)字符串。
想象一下,您有這樣的記錄(縮進(jìn)意味著層次結(jié)構(gòu),數(shù)字是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的后代,只需執(zhí)行此操作
SELECT FROM table WHERE ancestors LIKE "%6,2,1"
使祖先列保持最新狀態(tài)可能比給您帶來更多麻煩,但這對任何數(shù)據(jù)庫都是可行的解決方案。
添加回答
舉報
0/150
提交
取消