数据库子父结构表,树状结构数据进行递归查询

表结构:
在这里插入图片描述
三个字段如图所示,目标是获取每条数据的根id(父id为0的数据根id就是自己的id,否则一直根据父id去查找一直找到父id为0的数据,此数据的id就是根id)

业务中实际的解决办法:

新加一个字段进行存储,例如加个字段gen_id。
先执行
update demo_table set gen_id=id where parent_id=0
再反复执行
update demo_table a,(select id,gen_id from demo_table where gen_id is not null) b 
set a.gen_id=b.gen_id
where a.gen_id is null and a.parent_id =b.id;
直到gen_id都不为空

在这里插入图片描述
执行后可见表以存储根节点id

另一种解决方法:递归查询(效率太低)

mysql:mysql递归用法资料
执行sql

with RECURSIVE dg AS(#这是递归查询的开始,创建了一个名为dg 的递归表select *,id head_id from demo_table where parent_id=0#递归表的初始数据union all#每次递归进行合并select into_dg.*,dg.head_id from demo_table into_dg inner join dg on into_dg.parent_id=dg.id#每次递归被合并进bg的数据
)
SELECT * from dg

效果为:
在这里插入图片描述

oracle:oracle递归用法资料(需要搭配CONNECT_BY_ROOT函数可以实现本次要实现的查询根节点需求)
执行sql

select d.*,CONNECT_BY_ROOT d.id head_id,LEVEL from demo_table d
connect by PRIOR id=parent_id 
start with  parent_id = 0

在这里插入图片描述
其中LEVEL是层次,CONNECT_BY_ROOT d.id是将根节点的id进行展示,即我们所需要的值

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

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

相关文章

【c++】 STL的组件简介与容器的使用时机

STL六大组件简介 STL提供了六大组件,彼此之间可以组合套用,这六大组件分别是:容器、算法、迭代器、仿函数、适配器(配接器)、空间配置器。 容器:各种数据结构,如vector、list、deque、set、map等,用来存放…

135.乐理基础-半音是小二度吗?全音是大二度吗?三全音

内存参考于:三分钟音乐社 上一个内容:134.乐理基础-音程名字的简写-CSDN博客 上一个内容里练习的答案: 半音可以与小二度划等号吗?全音可以和大二度划等号吗? 严格来说它们是不能划等号的,半音与全音是侧…

如何在Windows部署TortoiseSVN客户端并实现公网连接内网VisualSVN服务端

文章目录 前言1. TortoiseSVN 客户端下载安装2. 创建检出文件夹3. 创建与提交文件4. 公网访问测试 前言 TortoiseSVN是一个开源的版本控制系统,它与Apache Subversion(SVN)集成在一起,提供了一个用户友好的界面,方便用…

vulhub中Tomcat7+ 弱口令 后台getshell漏洞

Tomcat版本:8.0 环境说明 Tomcat支持在后台部署war文件,可以直接将webshell部署到web目录下。其中,欲访问后台,需要对应用户有相应权限。 Tomcat7权限分为: manager(后台管理) manager-gui 拥…

Spring IOC在业务中常见的使用方式

目录 1、什么是IOC 2、java实现创建对象的方式有哪些 3、基于配置文件的di实现 3.1、什么是di 3.2、入门案例 3.3、环境搭建 接口和实现类 ioc配置文件 测试程序 3.4、案例总结 3.5、简单类型属性的赋值(set注入) set注入要求 JavaBean sp…

内存飙高问题如何排查?

目录 1、查看日志 2、查看GC情况 3、分析堆内存对象占用情况 4、分析堆内存快照文件 内存飙高如果发生在java进程上,一般情况是因为创建了大量对象导致,持续飙高说明垃圾回收跟不上对象创建的速度,或者内存泄漏导致对象无法被回收&#x…

力扣刷题:2.两数相加

题目: 给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。 请你将两个数相加,并以相同形式返回一个表示和的链表。 你可以假设除了数字 0 之外,这…

枚举(蓝桥练习)(反倍数、特别数的和、找到最多的数、小蓝的漆房、小蓝和小桥的挑战)

目录 一、枚举算法介绍 二、解空间的类型 三、循环枚举解空间 四、例题 (一、反倍数) (二、特别数的和) (三、找到最多的数) (四、小蓝的漆房) (五、小蓝和小桥的…

(C语言)Sleep函数,system函数,数组练习,详解与运用

一维数组详解:http://t.csdnimg.cn/zahZF 二维数组详解:http://t.csdnimg.cn/h2mLe 我们看过可一维数组与二维数组,现在我们来进行简单的练习。 题目:编写代码,演⽰多个字符从两端移动,向中间汇聚 1. …

Mysql索引优化导致死锁问题

1、背景 随着公司业务的发展,商品库存从商品中心独立出来成为一个独立的系统,承接主站商品库存校验、订单库存扣减、售后库存释放等业务。在上线之前我们对于核心接口进行了压测,压测过程中出现了MySQL 5.6.35死锁现象,通过日志发…

【python】Python Turtle绘制流星雨动画效果(附源码)

在这篇技术博客中,我们将学习如何使用 Python 的 Turtle 模块绘制一个流星雨的动画效果。通过简单的代码实现,我们可以在画布上展现出流星闪耀的场景,为视觉带来一丝神秘与美感。 一、效果图: 二、准备工作 (1)、导入…

nginx介绍及编译安装

nginx介绍 是一个流行的开源的高性能的HTTP和反向代理服务器,也可以用作邮件代理服务器。它以其高性能、稳定性、丰富的功能集和低资源消耗而闻名 nginx特点 高性能: Nginx以其高效的事件驱动架构而闻名,能够处理大量并发连接而不会消耗过多…