SQL生成树型结构数据

使用递归SQL实现树形参数的转换(后传前) 递归 SQL(Recursive SQL)是一种 SQL 查询语言的扩展,它允许在查询中使用递归算法。递归 SQL 通常用于处理树形结构或层次结构数据,例如组织结构、产品分类、地理位置等。递归部分定义了如何从一个节点到达下一个节点,而终止部分定义了递归何时结束。递归 SQL 语句通常使用关键字来定义在于它可以处理复杂的层次结构数据,而不需要编写复杂的程序或使用循环语句存在性能、内存、可读性和数据一致性(多线程或分布式情况下)等问题。 阅读详情

用标准SQL生成树型结构

# 使用条件
Mysql8.0以上使用
PostgreSQL 12.10
openGauss 5.0.0 
#####取节点下的所有子节点,包含自己
WITH RECURSIVE tree AS (
    SELECT id, name, parent_id FROM tableName WHERE id=42 -- 根节点条件    
    UNION ALL    
    SELECT t.id, t.name, t.parent_id
    FROM tableName t
    INNER JOIN tree ON t.parent_id = tree.id
)
SELECT * FROM tree;

#####取节点下的所有子节点,不包含自己
WITH RECURSIVE tree AS (
    SELECT id, name, parent_id FROM tableName WHERE parent_id=42 -- 根节点条件    
    UNION ALL    
    SELECT t.id, t.name, t.parent_id
    FROM tableName t
    INNER JOIN tree ON t.parent_id = tree.id
)
SELECT * FROM tree;

Oracle用SQL直接生成树型结构

    SELECT T.DID,
           CASE WHEN T.AREA_LEVEL=3 THEN  '|'||T.AREA_NAME
                WHEN T.AREA_LEVEL=4 THEN  ' |-'||T.AREA_NAME
                WHEN T.AREA_LEVEL=5 THEN  '  |-'||T.AREA_NAME END AREA_NAME,
           T.AREA_LEVEL,T.AREA_PARENT_DID,SYS_CONNECT_BY_PATH(t.AREA_NAME, '\') AS PATH_NAME
    FROM tableName T
    where 1 = 1
    CONNECT BY PRIOR t.DID = t.AREA_PARENT_DID
    START WITH T.AREA_LEVEL = 3
    order by PATH_NAME;

Mysql用SQL直接生成树型结构

#####取节点下的所有子节点,不包含自己
SELECT
    t3.category_id,t3.category_name,t3.parent_id,t3.dynamic_url
FROM
    (
			  SELECT t1.category_id,
					IF ( find_in_set( t1.parent_id, @parentIds ) > 0, @parentIds := concat( @parentIds, ',', t1.category_id ), 0 ) AS ischild ,
					t1.category_name,t1.dynamic_url,t1.parent_id
				FROM
						( SELECT category_id, parent_id,category_name,dynamic_url FROM sys_notice_category t WHERE t.del_flag = '0' and t.status='0'  ORDER BY parent_id, category_id ) t1,
						( SELECT @parentIds := '1' category_id ) t2 
    ) t3 
WHERE
    t3.ischild != 0;
Mysql树形表的两种查询方案(递归与自连接) mysql树形查询实现 阅读详情

相关推荐

【信息科学与工程学】计算机科学与自动化-——第十五篇云计算 11 算法篇

在百万级虚拟机、百万级租户的超大规模云环境中,核心算法挑战包括:挑战维度具体问题算法需求技术复杂度规模性​百万级对象并发管理分布式算法、分区算法极高(NP-hard问题)多租户​租户间隔离与资源共享公平性算法、隔离算法高(多目标优化)动态性​资源需求实时变化自适应算法、在线算法高(实时决策)异构性​硬件/负载/需求差异分类算法、匹配算法中高(多维度优化)经济性​资源利用率与成本平衡优化算法、博弈论算法高(多目标博弈)以下是按领域分类的详细算法列表:算法名称数学建模表达核心思想时间复杂度适用场景推理步骤首次适

weixin_49199313的博客 1396

SQL 树形结构

sql树形结构(转载) 2009-04-26 18:32  树形结构是一类重要的非线性结构,在关系型数据库中如何对具有树形结构的表进行查询,从而得到所需的数据是一个常见的问题。     关系型数据库将数据按表结构形式进行组织。它对表格的处理方便灵活,且易学易用,因而得到广泛的应用。关系型数据库所处理的表格是线性结构的,表的每一行对应着一个数据元素,称做一条记录。记录与记录之间呈线性

manbufenglin的专栏 2807

从‘查理复用’到TM52F1363:深入剖析5脚188数码管的驱动原理与避坑指南

本文深入解析了5脚188数码管的驱动原理,重点介绍了查理复用技术如何通过5个IO引脚高效驱动188段显示,并详细探讨了TM52F1363单片机的寄存器配置与驱动实现。文章还提供了常见问题的解决方案和性能优化技巧,帮助开发者避免实际应用中的各种陷阱。

weixin_29159441的博客 478

Sql中对于树形结构的处理

前言: 在开发中会遇到数据库为树形机构的表设计,级表中的数据的子id对应上一级的父id(parentId),这时候需要用到sql的自连接查询来得到树形结构的结果,并设计实体类来接收此类数据 表的自连接查询,即自己连接自己来查询数据: sql样例如下: SELECT t1.id one_id,t1.pname one_name, t2.id two_id,t2.pname two_name,...

weixin_43794897的博客 3225

AvFrame和AvPacket

在FFmpeg中,未压缩的图像和压缩的视频码流分别使用AVFrame结构和AVPacket结构保存;针对视频编码器,其流程为从数据源获取图像格式的输入数据,保存为AVFrame对象并传入编码器,从编码器输出AVPacket结构。

Lce的专栏 3236

ST7789P3初始化配置

【代码】ST7789P3初始化配置。

zqq_1314的博客 4153

数据库树形结构怎么查 四种方法解决

2.一次性全部查询出来,用Java代码实现数据的树形分解。2.2 树形结构可能变化,采用数据库的递归进行查询。注:以上Java代码粘贴自网络。1.使SQL实现树形查询。2.Java代码实现。

weixin_46757028的博客 8552

Spec-Kit实战:用‘规范驱动开发’重构一个老旧Node.js项目(避坑指南)

本文详细介绍了如何使用Spec-Kit工具通过‘规范驱动开发’(SDD)重构老旧Node.js项目。从逆向工程提取规范到增量改造策略,再到避免典型陷阱,提供了实战指南和避坑技巧,帮助开发者高效实现架构现代化,显著提升代码质量和维护效率。

weixin_42525582的博客 554

Bootstrap Treeview 将数据按照父子顺序生成树

Bootstrap Treeview 将父子结构数据按照顺序生成树前言组织方式 前言 因为项目的机会,使用到了Bootstrap Treeview的JavaScript组件.但是他要求的数据格式并不是简单的key/value形式.所以存在数据组织的问题,要么通过后端根据数据库查询出的数据进行重组,要么在前端对数据库返回数据进行重组.。 组织方式 对现在有效简单的数据组织方式做一次分享: 后端重组...

佩奇的博客 1522

icem二维非结构网格划分_ICEM CFD网格装配

正文共:718字7图 预计阅读时间:2分钟1 前言 对于一些大型的复杂的网格划分,可以将整个模型切分成多个子模型(二维几何用线切分,三维模型用面切分),然后对各个模型单独划分网格,最终装配在一起。这和机械设计的零件设计和装配设计有点相似,这个功...

weixin_39908758的博客 1625

ADS基础教程19 - 电磁仿真(EM)基本概念和实操

一、引言二、基本概念1.EM介绍2.Momentum介绍3.FEM介绍4.Substrate介绍三、创建Layout并进行Momentum仿真1.创建Layout2.添加Microtrip(微带线)3.添加Substrate4.Momentum仿真四、总结EM全称Electromagnetic,即electro(电)magnetic(磁)。ADS为设计和评估现代通信系统产品提供了电磁仿真工具(EM)。EM包括Momentumsimulator(动量仿真器)和FEM。

XZ_ZC的博客 1万+

简单查询树形结构数据库表

在与同事Rock讨论中,得到一个思路,不用嵌套调用直接用一个语句就可以生成树,实事上他已经做好了该程序,他用了临时表写了一个存储过程,我改写为一个表值函数,供大家参考: 表结构及表值函数如下:查询树表语句 1/**//****** Object:  Table [dbo].[Tree]    Script Date: 2005-11-04 18:07:00 ******/ 2CREATE TABLE [dbo].[Tree] ( 3  [ID] [int] IDENTITY (1, 1) NOT NUL

闷骚的男 1374

高德地图API如何使用

通过以上步骤,您可以成功接入并使用高德地图API来为您的应用添加丰富的地图功能。

QQ_778132974的博客 4784

oracle 查询数据生成树形结构

ORACLE提供了一种树形结构用来实现层次查询:     START WITH :指定记录是根节点的条件。根节点可以有多个。     CONNECT BY :指定记录之间是父节点和子节点关系的条件。查找出含有子节点的父节点的条件     PRIOR :指定父节点记录的引用。     SIBLINGS :指定树的排序。同一父节点下的兄弟节点的顺序。 SE

gmj53的专栏 1158

【雕爷学编程】MicroPython手册之 Teensy 4.1 实时时钟 (RTC)

在类的初始化函数中,定义了用于控制I2C总线的i2c对象和RTC模块的I2C地址。接着,使用该引脚初始化了一个Pin对象。它还提供了8个串口,3个SPI端口,3个I2C端口,2个I2S/TDM数字音频端口,3个CAN总线(其中一个支持CAN FD),以及一个SDIO(4位数据)原生SD卡端口12。2、内存:Teensy 4.1配备了1024 KB的RAM(其中512 KB是紧密耦合的),8 MB的Flash(其中64 KB用于恢复和EEPROM模拟),以及两个位置可以选择添加更多的QSPI内存芯片。

雕爷学编程 575

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

List集合转化为Tree父子节点结构数据的demo实现

目录前言说明效果图数据库脚本表结构初始化数据代码实现beandaomapper转化Tree的工具类serviceserviceImplcontroller访问接口 前言说明 此文章是衔接MySQL根据父子节点向上/向下递归查询SQL实现Demo的后续,在上篇文章中我们知道了怎么在数据库中去通过递归函数,向上或者向下递归查询节点数据,那么这篇文章是一个比较完整讲解了从数据库出来的数据,怎么转化为Tree结构的数据返回给前端,效果图可见下图。 效果图 根据父节点递归查子节点数据库查询图和代码转化为Tree结.

Apollo 2483

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

昆明理工大学2026年硕士研究生招生考试《891计算机专业核心综合》考试大纲

第一部分 考试形式和试卷结构试卷满分为 150 分,考试时间为 180 分钟。答题方式为闭卷、笔试。数据结构,约占 30%。数据库系统原理,约占 30%。操作系统,约占 20%。计算机网络,约占 20%。试卷题型结构为:选择题、问答题、应用题。第二部分 考察的知识及范围。

2501_92961997的博客 1253

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

昆明理工大学2026年硕士研究生入学考试《计算机专业核心综合》考试大纲

试卷满分为 150分,考试时间为 180分钟。

taw19960426的博客 440

构建数据库数据的树状结构

本教程介绍如何用数据库中的数据,动态地构建一个树状结构。使用 NetBeans Visual Web Pack 5.5,构建一个两页应用程序,第一页包含一个 Tree 组件。使用来自数据库的名称,将一级节点填充在 Tree 中,使用人员的 trip 填充二级节点。trip 节点与第二页链接,显示该 trip 的详细信息。目录l      设计主页l      连接数据库l      使用数据库

.NET博文收藏 477

sql with as 递归的实现(树形结构)

WITH AS短语,也叫做子查询部分(subquery factoring),定义一个sql 片段,改sql 片段会被整个sql语句用到。其中最实用的功能就是数据的递归,递归的原理:递归包括至少两个查询,一个查询作为递归的基点也就是起点,另一个查询作为递归的成员。   一、定义一个公司(company)表 ,总公司下面包含子公司,子公司下面又包含分办事处 CREATE TABLE [dbo]...

liufeifeinanfeng的博客 1万+

树形结构查询

java后端返回树形结构的数据

weixin_36870769的博客 3160

使用SQL递归查询树状结构,又可以跟同事吹牛了!

在关系型数据库中,数据通常存储为二维表格(rows 和 columns)。然而,在实际业务中,很多场景下我们需要处理树状结构公司组织架构:从某个部门开始,查询其下属部门或员工。商品分类:查询某个大类下的所有子类。权限系统:根据某个角色,查询其子角色或权限继承关系。评论区:查找某个评论的所有子评论。树状数据的查询通常需要递归逻辑来处理,我看到很多人在业务代码中进行递归查询,如果数据量过大,会导致查询的次数过多,产生不必要的网络开销,而 SQL 中的递归查询。

阿杆的博客 2241

使用sql构建树形结构

如何使用sql语句构建树形结构???我的表结构父类为0,子类的pid为父类的id。首先构建好思路,写两条sql。

weixin_68931039的博客 1613

树型表查询方法 —— SQL递归

本文介绍如何实现课程分类数据的树形结构查询接口。课程分类表采用树型结构,通过parentid字段记录父子关系。文章提出两种查询方案:1)使用自连接查询固定层级数据,适用于已知层级深度的情况;2)采用MySQL递归查询(WITH RECURSIVE语法)处理不确定层级的树形数据。

记得开心一点嘛的博客 1664

树,图,层次结构在sql中的巧妙使用(一)

一.图 图是一组由边连接起来的项目组成的集合。每一项称为图的一个节点。图的两个顶点之间的连接称为边。 图是对一类数据结构的统称,很多应用场景都可以表示为图。例如:下面要介绍的员工组织图,材料清单图,道路系统等等。 有向/无向 在有向图中,一条边的两个顶点具有某种方向或顺序。无向图中,每条边只是简单连接两个顶点,没有特定顺序。 无环 无环图是指不包含循环的图。意思是,图中没有任何路径开始和结束于同一个顶点。(例如。员工组织图和BOM就是无环图。有向无环图也称为DAG) ...

qq_37617419的博客 1771

通过sql生成树型结构

create   table   tb(id   int,name   varchar(10),parentid   int)     insert   tb   select   1,aaaa         ,0     union   all   select   2,bbbb         ,0     union   all   select   3,cccc     

eidolon's blog 3228
上一篇: 将数据列表转为树型
workbetter
博客等级 码龄19年 17粉丝 3原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值