微信网站怎样做,wordpress初始登录,1688创业商机网,河南工程建筑信息网我在关系数据库中有一个表#xff0c;其中我使用称为物化路径(也称为Lineage列)的技术对树进行编码。 也就是说#xff0c;对于我树中的每个节点#xff0c;我在表中有一行#xff0c;并且对于每一行#xff0c;我有一个名为ancestry的字符串列#xff0c;其中我存储从根…我在关系数据库中有一个表其中我使用称为物化路径(也称为Lineage列)的技术对树进行编码。 也就是说对于我树中的每个节点我在表中有一行并且对于每一行我有一个名为ancestry的字符串列其中我存储从根节点到该行所表示的节点的路径。是否有可能如果是 - 如何选择按顺序排序的表中的行那么它们应该按照访问树深度优先的结果顺序出现在结果集中。 我使用MySQL - 所以没有递归查询和没有ltree扩展。例如树它的表并按预订顺序排序1 SELECT * FROM nodes SELECT * FROM nodes ORDER BY ?depth_first_visit_order?| \ id | ancestry id | ancestry2 3 ------------- -------------| | \ 1 | NULL 1 | NULL NOTE: I dont care about the4 5 6 2 | 1 2 | 1 order of siblings!| 3 | 1 4 | 1/27 4 | 1/2 3 | 15 | 1/3 5 | 1/36 | 1/3 7 | 1/3/57 | 1/3/5 6 | 1/3注意我对通过物化路径编码明确感兴趣相关在关系数据库中存储分层数据有哪些选项相似的stackoverflow.com/questions/2797720/…我相信你想要的是一个字母排序。SELECT id, ancestry, ancestry / CAST(id as nvarchar(10)) AS PathEnumerationFROM nodesORDER BY 3 ASC;我真的不记得MySQL如何连接但我确定我的意思很明确。11/21/2/41/31/3/51/3/5/71/3/6请注意这是一个字母排序所以11将在2之前出现。但是你说你不关心兄弟订购。 当然我会将其重写为嵌套集;)我可能会将它重写为嵌套集因为我有很多短树。 事情是我的数据已经是物化路径自然编码(域名准确地说是a.b.c)。 我将不得不思考一段时间因为我不太确定它是否有效在一般情况下。这将按你的祖先的最后一个数字排序select *,Substring(ancestry,LEN(ancestry) - Charindex(/,Reverse(ancestry))2, LEN(ancestry)) as END_CHARfrom nodesorder by END_CHAR desc我没有尝试使用大于9的数字你可能需要转换为int对不起刚才意识到这不能回答你的问题我误解了。 生病离开查询它可能会给你一些想法。