日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql树节点路径,关于mysql:从使用物化路径编码树的表中选择,按深度优先排序(无递归/ ltree)...

發(fā)布時間:2025/3/12 数据库 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql树节点路径,关于mysql:从使用物化路径编码树的表中选择,按深度优先排序(无递归/ ltree)... 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

我在關(guān)系數(shù)據(jù)庫中有一個表,其中我使用稱為物化路徑(也稱為Lineage列)的技術(shù)對樹進行編碼。 也就是說,對于我樹中的每個節(jié)點,我在表中有一行,并且對于每一行,我有一個名為ancestry的字符串列,其中我存儲從根節(jié)點到該行所表示的節(jié)點的路徑。

是否有可能,如果是 - 如何選擇按順序排序的表中的行,那么它們應(yīng)該按照訪問樹深度優(yōu)先的結(jié)果順序出現(xiàn)在結(jié)果集中。 我使用MySQL - 所以沒有遞歸查詢和沒有l(wèi)tree擴展。

例如,樹,它的表,并按預(yù)訂順序排序:

1 ? ? ? ?SELECT * FROM nodes ? SELECT * FROM nodes ORDER BY ?depth_first_visit_order?

| \ ? ? ? id | ancestry ? ? ? ? id | ancestry

2 ? 3 ? ? ------------- ? ? ? ? -------------

| ?| \ ? ?1 ?| NULL ? ? ? ? ? ? 1 ?| NULL ? ? ? ? ? NOTE: I don't care about the

4 ?5 ?6 ? 2 ?| 1 ? ? ? ? ? ? ? ?2 ?| 1 ? ? ? ? ? ? ? ? ? ?order of siblings!

| ? ? ?3 ?| 1 ? ? ? ? ? ? ? ?4 ?| 1/2

7 ? ? ?4 ?| 1/2 ? ? ? ? ? ? ?3 ?| 1

5 ?| 1/3 ? ? ? ? ? ? ?5 ?| 1/3

6 ?| 1/3 ? ? ? ? ? ? ?7 ?| 1/3/5

7 ?| 1/3/5 ? ? ? ? ? ?6 ?| 1/3

注意:我對通過物化路徑編碼明確感興趣!

相關(guān):在關(guān)系數(shù)據(jù)庫中存儲分層數(shù)據(jù)有哪些選項?

相似的stackoverflow.com/questions/2797720/…

我相信你想要的是一個字母排序。

SELECT id, ancestry, ancestry + '/' + CAST(id as nvarchar(10)) AS PathEnumeration

FROM nodes

ORDER BY 3 ASC;

我真的不記得MySQL如何連接,但我確定我的意思很明確。

1

1/2

1/2/4

1/3

1/3/5

1/3/5/7

1/3/6

請注意,這是一個字母排序,所以11將在2之前出現(xiàn)。但是,你說你不關(guān)心兄弟訂購。 當(dāng)然,我會將其重寫為嵌套集;)

我可能會將它重寫為嵌套集,因為我有很多短樹。 事情是我的數(shù)據(jù)已經(jīng)是"物化路徑"自然編碼(域名準確地說是a.b.c)。 我將不得不思考一段時間,因為我不太確定它是否有效,在一般情況下。

這將按你的"祖先"的最后一個數(shù)字排序

select *,

Substring(ancestry,LEN(ancestry) - Charindex('/',Reverse(ancestry))+2, LEN(ancestry)) as END_CHAR

from nodes

order by END_CHAR desc

我沒有嘗試使用大于9的數(shù)字,你可能需要轉(zhuǎn)換為int

對不起,剛才意識到這不能回答你的問題,我誤解了。 生病離開查詢,它可能會給你一些想法。

總結(jié)

以上是生活随笔為你收集整理的mysql树节点路径,关于mysql:从使用物化路径编码树的表中选择,按深度优先排序(无递归/ ltree)...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。