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

我在关系数据库中有一个表,其中我使用称为物化路径(也称为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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/561937.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

HTML+CSS+JS实现 ❤️Three碎片化图片切换❤️

🍅 作者主页:Java李杨勇 🍅 简介:Java领域优质创作者🏆、【java李杨勇】公号作者✌ 简历模板、学习资料、面试题库、技术互助【关注我,都给你】 🍅 欢迎点赞 👍 收藏 ⭐留言 &…

w8系统搭建php网站,360W8系统下如何配置PHP网站运行环境

为例,跟大家带来具体的设置步骤,供大家学习参考使用!1、大家可以现在百度软件中心下载我们需要的软件到电脑,然后解压到自己电脑,提醒大家将文件解压到电脑的磁盘根目录。还要说一句,目前小编介绍的方法适用…

HTML+CSS+JS实现 ❤️圣诞抓礼物小游戏❤️

🍅 作者主页:Java李杨勇 🍅 简介:Java领域优质创作者🏆、【java李杨勇】公号作者✌ 简历模板、学习资料、面试题库、技术互助【关注我,都给你】 🍅 欢迎点赞 👍 收藏 ⭐留言 &…

HTML+CSS+JS实现 ❤️3D建筑结构旋转特效❤️

🍅 作者主页:Java李杨勇 🍅 简介:Java领域优质创作者🏆、【java李杨勇】公号作者✌ 简历模板、学习资料、面试题库、技术互助【关注我,都给你】 🍅 欢迎点赞 👍 收藏 ⭐留言 &…

oracle 解死锁权限,讲解Oracle数据库中结束死锁进程的一般方法

1、查看死锁1)用dba用户执行以下语句select username,lockwait,status,machine,program from v$session where sid in(select session_id from v$locked_object)如果有输出的结果,则说明有死锁,且能看到死锁的机器是哪一台。字段说明:Usernam…

HTML+CSS+JS实现 ❤️H5图片列表滑动特效❤️

🍅 作者主页:Java李杨勇 🍅 简介:Java领域优质创作者🏆、【java李杨勇】公号作者✌ 简历模板、学习资料、面试题库、技术互助【关注我,都给你】 🍅 欢迎点赞 👍 收藏 ⭐留言 &…

oracle 设置输出显示中文乱码,修改oracle当前会话的语言环境,解决oracle显示中文乱码的问题 | 信春哥,系统稳,闭眼上线不回滚!...

对于数据库ORACLE有时操作时,提示的是一串串???,不能起到提示的作用,这是由于语言环境的设置问题,下面是实际操作中要用到的。查看当前会话的语言环境:SQL> select userenv(language) from dual;USERENV(LANGUAG…

HTML+CSS+JS实现 ❤️绘制卡丁车动漫特效❤️

🍅 作者主页:Java李杨勇 🍅 简介:Java领域优质创作者🏆、【java李杨勇】公号作者✌ 简历模板、学习资料、面试题库、技术互助【关注我,都给你】 🍅 欢迎点赞 👍 收藏 ⭐留言 &…

oracle删除排序数据库,数据库的数据操作:增删改查和排序

一、增1.1【插入单行】insert [into] (列名) values (列值)例:insert into Strdents (姓名,性别,出生日期) values (开心朋朋,男,1980/6/15)1.2【将现有表数据添加到一个已有表】insert into (列名) select from 例:insert into tongxunlu (姓名,地址,电…

HTML+CSS+JS实现美女canvas仿ps橡皮擦刮刮卡

🍅 作者主页:Java李杨勇 🍅 简介:Java领域优质创作者🏆、Java李杨勇公号作者✌ 简历模板、学习资料、面试题库、技术互助【关注我,都给你】 🍅 欢迎点赞 👍 收藏 ⭐留言 &#x1f…

oracle 并行用索引,分区索引并行导致的性能问题

问题现象;生产环境报ORA-17144statement handle not executed然后我把sql抓出来手工运行一遍执行计划如下:----------------------------------------------------------Plan hash value: 644608605--------------------------------------------------------------…

HTML+CSS+JS实现 ❤️贪吃蛇游戏、你能吃过我?❤️【源码送给你一起来玩-建议收藏】

🍅 作者主页:Java李杨勇 🍅 简介:Java领域优质创作者🏆、Java李杨勇公号作者✌ 简历模板、学习资料、面试题库、技术互助【关注我,都给你】 🍅 欢迎点赞 👍 收藏 ⭐留言 &#x1f…

ORACLE 12C 插入数据遇到 Error getting generated key or setting result to parameter object错误

今天用springboot和oracle的时候遇到以前的老项目保存数据的时候显示报错 Error getting generated key or setting result to parameter object 根据这句话的字面理解意思就是 获取生成的键或将结果设置为参数对象时出错 看了下网上的解决方法主要是这样 第一种方式&am…

oracle02070,ORA-02070:database does not support semijoin错误 | 信春哥,系统稳,闭眼上线不回滚!...

前段时间小姨子遇到了ORA-02070:database does not support semijoin错误:--以下是应用程序报错:at com.ibm.io.async.AsyncFuture.completed(AsyncFuture.java:138) at com.ibm.io.async.ResultHandler.complete(ResultHandler.java:204)at com.ibm.io.async.Resul…

基于Echarts+HTML5可视化数据大屏展示——智慧物流服务中心

🍅 作者主页:Java李杨勇 🍅 简介:Java领域优质创作者🏆、Java李杨勇公号作者✌ 简历模板、学习资料、面试题库、技术互助【关注我,都给你】 🍅 欢迎点赞 👍 收藏 ⭐留言 &#x1f…

基于Echarts+HTML5可视化数据大屏展示—大数据管理平台中心

🍅 作者主页:Java李杨勇 🍅 简介:Java领域优质创作者🏆、Java李杨勇公号作者✌ 简历模板、学习资料、面试题库、技术互助【关注我,都给你】 🍅 欢迎点赞 👍 收藏 ⭐留言 &#x1f…

数据从一个Oracle导到另一个,oracle拷贝数据导另一个用户

exp web_hs/web_hsJIUHUA fileD:\abcd.dmp alter user web_esky identified by web_esky; (修改用户密码)imp web_esky/web_eskyJIUHUA fully filed:\abcde.dmp ignorey //东华的数据库1 先从svn上下载下来 我的svn用户名:wy 密码:wy9302422 用任意…

基于Echarts+HTML5可视化数据大屏展示—大数据管理平台中心(二)

🍅 作者主页:Java李杨勇 🍅 简介:Java领域优质创作者🏆、Java李杨勇公号作者✌ 简历模板、学习资料、面试题库、技术互助【关注我,都给你】 🍅 欢迎点赞 👍 收藏 ⭐留言 &#x1f…

提示未检测到 oracle,Oracle RAC [INS-40406] 未检测到现有的 Oracle Grid Infrastructure 软件...

[INS-40406] 未检测到现有的Oracle Grid Infrastructure 软件问题描述:升级过程中强制中断升级导致的[INS-40406]报错信息如下[INS-40406] 安装程序在系统中未检测到现有的 Oracle Grid Infrastructure 软件。原因 - 安装程序未检测到任何要升级的现有 Oracle Clust…

基于Echarts+HTML5可视化数据大屏展示—新能源车联网综合大数据平台

🍅 作者主页:Java李杨勇 🍅 简介:Java领域优质创作者🏆、Java李杨勇公号作者✌ 简历模板、学习资料、面试题库、技术互助【关注我,都给你】 🍅 欢迎点赞 👍 收藏 ⭐留言 &#x1f…