我在关系数据库中有一个表,其中我使用称为物化路径(也称为Lineage列)的技术对树进行编码。 也就是说,对于我树中的每个节点,我在表中有一行,并且对于每一行,我有一个名为ancestry的字符串列,其中我存储从根节点到该行所表示的节点的路径。

是否有可能,如果是 - 如何选择按顺序排序的表中的行,那么它们应该按照访问树深度优先的结果顺序出现在结果集中。 我使用MySQL - 所以没有递归查询和没有ltree扩展。

例如,树,它的表,并按预订顺序排序:

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

注意:我对通过物化路径编码明确感兴趣!

相关:在关系数据库中存储分层数据有哪些选项?

相似的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之前出现。但是,你说你不关心兄弟订购。 当然,我会将其重写为嵌套集;)

我可能会将它重写为嵌套集,因为我有很多短树。 事情是我的数据已经是"物化路径"自然编码(域名准确地说是a.b.c)。 我将不得不思考一段时间,因为我不太确定它是否有效,在一般情况下。

这将按你的"祖先"的最后一个数字排序

select *,

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

from nodes

order by END_CHAR desc

我没有尝试使用大于9的数字,你可能需要转换为int

对不起,刚才意识到这不能回答你的问题,我误解了。 生病离开查询,它可能会给你一些想法。

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

  1. mysql id 不在集合里面_MySQL,PHP:从表中选择*,其中id不在数组中

    所以我现在有一个数据库表,我试图选择所有记录,除了包含在我所做的数组中的所有记录.正如一些背景方面:MySQL,PHP:从表中选择*,其中id不在数组中 在有问题的数据库表的结构是: server_s ...

  2. php mysql 偶数 id_javascript – 如何从mysql数据库(PHP)中的表中选择所有偶数的帖子ID...

    我想从我的 mysql数据库中的表中选择所有偶数的id,然后显示它们.我也想得到所有的帖子与奇怪的id,并显示在别的地方. 我想用PHP这样做,因为这是我使用的服务器端语言. 或者,我必须选择所有帖子 ...

  3. mysql 不在另一个表中_MySQL选择查询从表中选择不在另一个表中的行?

    对于我们的示例,我们将创建两个表并应用"自然左联接"以从第二个表中不存在的表中获取行. 创建第一个表.mysql> create table FirstTableDemo - ...

  4. mysql mgr节点无法连接,MySQL MGR成员故障处理

    1. 主观造成主从节点间binlog的丢失 MGR故障模拟1 如下是搭建完成后的MGR集群,目前集群处于完全正常的状态中. #执行如下操作,主观造成主从节点间binlog的丢失 use shooter ...

  5. hive运行mysql脚本_用java代码调用shell脚本执行sqoop将hive表中数据导出到mysql

    1:创建shell脚本 1 touch sqoop_options.sh2 chmod 777 sqoop_options.sh 编辑文件  特地将执行map的个数设置为变量  测试 可以java代码 ...

  6. mysql两个表条件_mysql – 在另一个表中选择具有多个条件的...

    这是我的简化数据库方案 -- ----------------------------------------------------- -- Table `products` -- -------- ...

  7. mysql 选择前4个_mysql从4个表中选择

    不要认为GROUP BY是必需的 . 虽然如果一个孩子有2个父记录,你可能想用它来将2个父母分组到一行 - 但不确定这是否是你的要求 . 因为如果一个孩子有2个父母,那么将为该孩子返回的父母是未定义的 ...

  8. mysql查询出来的数据用连接_mysql – 使用查询从连接的表中检索数据

    我想做的事: 我想检索有关客户的所有数据字段(包括与他相关的表中的所有数据(例如,引用的国家和数据字段的数据字段) 我想将我的查询作为idUser的参数. 这是我的EER图: 我尝试了什么: SELE ...

  9. MySQL使用报错:1054 - Unknown column ‘sno‘ in ‘field list‘(表中字段编码与SQL语句中编码不统一)

    情况描述:在Navicat中新建了一个数据库,然后导入了几个CSV文件,建立了几个表: 其中sno_info结构如下所示: 当我简单查询Sno的时候: 报错了: 1054 - Unknown colu ...

最新文章

  1. 炸裂!这些大厂跪求的人才太牛了!
  2. 读书笔记:《少的力量》
  3. XCode 7上传遇到ERROR ITMS-90535 Unexpected
  4. trigger自动执行事件
  5. Toolbar中Overflow Menu不显示问题
  6. 阿里云开发者学院电子书《Dubbo分布式服务治理实战》重磅来袭!
  7. 【linux】Ubuntu 18.04 设置桌面快捷启动方式
  8. 熟悉HTML基本标签的分类测试分析 1218
  9. android 动态画直线,Android使用自定义view在指定时间内匀速画一条直线的实例代码...
  10. java获取作用域的值_Java-springMVC框架:springMVC取参数值、把值放入作用域方法
  11. CSS修改iframe内的样式问题
  12. 【Spark】sparksql中使用自定义函数
  13. Oracle学习 实战心得总结
  14. 【小技巧】程序运行结束后弹窗提醒
  15. windows7系统iis安装不了应该怎么办
  16. 好的编码习惯是一场代码驱邪仪式
  17. vue生命周期学习(watch跟computed)
  18. 不吹不黑,三年赶超阿里云,华为这次是认真的!
  19. 解决jupyter中matplotlib中文乱码问题
  20. 腾讯安全联手知道创宇应对全球勒索攻击事件

热门文章

  1. 软件工程详细设计说明书_软件工程导论知识点梳理之简答题
  2. layui表单的ajax联动,layui的select联动实现代码
  3. java变量用来干嘛_Java
  4. kali mysql停止服务器_从零开始:手把手教你黑客入门攻破服务器并获取ROOT权限...
  5. r导出html怎么保存,做植物谱系图,用Phylomatic软件将网页中的输出结果拷贝到文本文件中, 并另存为phylo...
  6. Java字符串池(String Pool)深度解析
  7. java 的构造函数修饰符public private protected
  8. gpt efi win7 linux,科学网—UEFI+GPTSSD+HDD 成功安装win10+Centos linux7 过程 - 陈长云的博文...
  9. ES6 里面的 class
  10. java 线程 释放_java线程似乎不会被释放