第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

是否可以通過單個(gè)查詢?cè)贛ySQL中查詢樹結(jié)構(gòu)表到任何深度?

是否可以通過單個(gè)查詢?cè)贛ySQL中查詢樹結(jié)構(gòu)表到任何深度?

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

3 回答

?
紫衣仙女

TA貢獻(xiàn)1839條經(jīng)驗(yàn) 獲得超15個(gè)贊

我之前遇到過這個(gè)問題,并且有一個(gè)古怪的想法。您可以在每個(gè)記錄中存儲(chǔ)一個(gè)字段,該字段是直接祖先的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)可能比給您帶來更多麻煩,但這對(duì)任何數(shù)據(jù)庫都是可行的解決方案。


查看完整回答
反對(duì) 回復(fù) 2019-10-28
?
慕標(biāo)5832272

TA貢獻(xiàn)1966條經(jīng)驗(yàn) 獲得超4個(gè)贊

當(dāng)您要問的主要問題是“我所有的孩子是什么”和“父母全部是什么”時(shí),Daniel Beardsley的答案根本不是一個(gè)糟糕的解決方案。


作為對(duì)Alex Weinstein的回應(yīng),與Celko技術(shù)相比,此方法實(shí)際上導(dǎo)致對(duì)父級(jí)運(yùn)動(dòng)上的節(jié)點(diǎn)的更新更少。在Celko的技術(shù)中,如果最左邊的2級(jí)節(jié)點(diǎn)移動(dòng)到最右邊的1級(jí)節(jié)點(diǎn)之下,則樹中幾乎每個(gè)節(jié)點(diǎn)都需要更新,而不僅僅是節(jié)點(diǎn)的子節(jié)點(diǎn)。


但是我要說的是,丹尼爾可能會(huì)以錯(cuò)誤的方式將路徑存儲(chǔ)回根。


我會(huì)存儲(chǔ)它們,以便查詢將


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

這意味著mysql可以使用“祖先”列上的索引,而前導(dǎo)%則無法做到這一點(diǎn)。


查看完整回答
反對(duì) 回復(fù) 2019-10-28
  • 3 回答
  • 0 關(guān)注
  • 1136 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)