机构,通常都是有层级的,当机构编码没有规则的时候,仅通过 id和pid,就需要
通过递归查询来求得给定机构的所有下属代码:
create table tb(id varchar(3) , pid varchar(3) , name varchar(100));
insert into tb values('002' , 0 , '浙江省');
insert into tb values('001' , 0 , '广东省');
insert into tb values('003' , '002' , '衢州市');
insert into tb values('004' , '002' , '杭州市') ;
insert into tb values('005' , '002' , '湖州市');
insert into tb values('006' , '002' , '嘉兴市') ;
insert into tb values('007' , '002' , '宁波市');
insert into tb values('008' , '002' , '绍兴市') ;
insert into tb values('009' , '002' , '台州市');
insert into tb values('010' , '002' , '温州市') ;
insert into tb values('011' , '002' , '丽水市');
insert into tb values('012' , '002' , '金华市') ;
insert into tb values('013' , '002' , '舟山市');
insert into tb values('014' , '004' , '上城区') ;
insert into tb values('015' , '004' , '下城区');
insert into tb values('016' , '004' , '拱墅区') ;
insert into tb values('017' , '004' , '余杭区') ;
insert into tb values('018' , '011' , '金东区') ;
insert into tb values('019' , '001' , '广州市') ;
insert into tb values('020' , '001' , '深圳市') ;
--这里就可以看到004所有的下级
WITH RECURSIVE cte(id,name,pid) as
(
select a.id,a.name,a.pid from tb a where id='004'
union all
select k.id,k.name,k.pid from tb k inner join cte c on c.id = k.pid
)
select id,name,pid from cte order by pid ;
--要保存递归查询的数据,只需再建一张表
create table vt(id varchar(3) , name varchar(100));
insert into vt
WITH RECURSIVE cte(id,name,pid) as
(
select a.id,a.name,a.pid from tb a where id='004'
union all
select k.id,k.name,k.pid from tb k inner join cte c on c.id = k.pid
)
select id,name,pid from cte order by pid ;
相关推荐
在数据库设计中,递归查询是一种处理层级关系数据的关键技术,尤其在存在多级关联的数据结构时显得尤为重要。本文将深入探讨如何通过递归查询来解决这类问题,并着重讲解使用`WITH`语句来实现递归查询的方法,适用...
这里,我们将深入探讨如何使用递归查询来构建菜单树,并特别关注在MySQL和Oracle这两种广泛使用的数据库系统中的实现。 首先,我们要理解什么是递归查询。递归查询是一种在数据库中处理层次数据的方法,它通过自身...
递归查询是在数据库中查找具有层级关系的数据时的一种常见方法,通过反复调用自身来遍历整个树结构。 递归查询在构建菜单树时尤其有用,因为菜单通常有层级关系,如父菜单包含子菜单,子菜单可能还有孙子菜单等。在...
在数据库管理中,递归查询主要用于处理层级结构数据,如组织架构、产品分类等。递归查询可以方便地遍历多级关系,实现对无限层级的数据进行查询。 #### 二、SQL递归查询语法介绍 递归查询主要通过`WITH`子句实现,...
【MySQL数据库SQL递归查询的研究与实现】 MySQL是一种广泛应用的关系型数据库管理系统,以其开源、高效和跨平台等特性,尤其适合中小型网站的部署。虽然MySQL在处理常规数据操作和查询方面表现出色,但在某些特定...
在查询数据库时,递归查询意味着我们查询一个记录,然后根据该记录的某些属性再查询其关联的记录,这个过程可能反复进行,直到满足某个终止条件。 在Hibernate中,我们可以利用HQL(Hibernate Query Language)或 ...
本文将深入探讨“带数据库的递归经典树形菜单”这一主题,结合给定的文件内容,包括如何实现递归,构建树形结构,以及如何通过SQL语句来管理和操作数据。 首先,我们要理解“递归”这一概念。在编程中,递归是一种...
### 递归查询数据库,返回List到前台 在IT领域,数据处理是极其重要的环节之一。对于具有层次结构的数据,例如公司与子公司之间的关系,使用递归查询是一种常见且高效的方法。本文将深入探讨如何利用递归技术实现对...
在Java递归树型结构通用数据库中,使用递归算法来实现部门信息的查询和删除操作,该算法可以递归查询部门信息,实现树型结构的部门管理。 7. 部门树型结构展示 在Java递归树型结构通用数据库中,提供了部门树型...
在数据库管理中,递归查询是一种处理层次结构数据的有效方法,尤其在关系型数据库如MySQL中,递归查询可以帮助我们解决树形结构或有层级关系的数据检索问题。本资料主要探讨了MySQL中实现递归查询的三种常见方法:自...
MySQL作为一种广泛使用的数据库管理系统,提供了多种方法来实现递归查询。本文旨在通过对比两种不同的MySQL递归树查询方式,分析它们的效率差异,帮助开发者选择更适合实际应用场景的方法。 #### 二、环境准备 ...
在数据库查询中,递归查询主要用于处理层级或树形结构的数据。这类数据的特点是每一项记录不仅包含自身的信息,还可能与其他记录形成上下级关系。MySQL 中进行递归查询有两种常见的方式:一种是使用存储过程,另一种...
在数据库查询语言中,Oracle 提供了一种强大的功能——递归查询,这在其他数据库系统如 SQL Server 中是缺失的功能。递归查询允许用户执行多级关联查询,特别适用于处理具有层次结构的数据,例如组织结构图、文件...
在关系型数据库中,递归查询是一种用于处理层次结构数据的强大工具。它允许我们从一个初始条件出发,逐步向下探索数据层级,直到达到所需的目标。这种查询通常用于模拟树形结构的数据模型,如组织架构、文件系统等。...
本文将深入探讨这两个数据库系统中如何使用递归查询语句来操作树形结构。 首先,让我们理解什么是树形结构。在数据存储中,树形结构是一种层次化的数据模型,它由节点(或称为记录)组成,每个节点可以有零个或多...
本示例中的“递归循环读取省市区json文件数据,并保存到数据库中”是一个全面的教程,它涵盖了从JSON解析到数据库交互的关键技术。以下是这个过程涉及的主要知识点: 1. **JSON (JavaScript Object Notation)**:...
总结起来,实现“递归法读取数据库树型结构”涉及数据库查询、递归算法、数据结构操作和用户界面控件的使用。通过这种方式,我们可以高效地处理和展示数据库中的层次数据,提供直观的用户体验。在实际项目中,可以...
Oracle数据库提供了强大的递归查询功能来解决这类问题。本文将详细介绍如何在Oracle中使用递归查询,并通过具体的示例来展示其用法。 #### 二、递归查询的基础概念 递归查询是Oracle中一种特殊的查询方式,主要...
**Oracle数据库与递归查询** Oracle数据库是世界上最流行的商业关系型数据库管理系统之一,支持复杂的数据处理和高性能事务处理。在Oracle中,进行递归查询通常使用的是`CONNECT BY`子句,它可以遍历层次结构数据,...