iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >Oracle递归查询
  • 803
分享到

Oracle递归查询

2024-04-02 19:04:59 803人浏览 安东尼
摘要

                ----创建数

                ----创建数据

1.1、建立表与插入数据

Oracle递归查询

CREATE TABLE DISTRICT
(
  ID         NUMBER(10)                  NOT NULL,
  PARENT_ID  NUMBER(10),
  NAME       VARCHAR2(255 BYTE)          NOT NULL);ALTER TABLE DISTRICT ADD (  CONSTRaiNT DISTRICT_PK PRIMARY KEY
 (ID));ALTER TABLE DISTRICT ADD (  CONSTRAINT DISTRICT_R01 
 FOREIGN KEY (PARENT_ID) 
 REFERENCES DISTRICT (ID)); 
 
 insert into DISTRICT (id, parent_id, name)values (1, null, '四川省');insert into DISTRICT (id, parent_id, name)values (2, 1, '巴中市');insert into DISTRICT (id, parent_id, name)values (3, 1, '达州市');insert into DISTRICT (id, parent_id, name)values (4, 2, '巴州区');insert into DISTRICT (id, parent_id, name)values (5, 2, '通江县');insert into DISTRICT (id, parent_id, name)values (6, 2, '平昌县');insert into DISTRICT (id, parent_id, name)values (7, 3, '通川区');insert into DISTRICT (id, parent_id, name)values (8, 3, '宣汉县');insert into DISTRICT (id, parent_id, name)values (9, 8, '塔河乡');insert into DISTRICT (id, parent_id, name)values (10, 8, '三河乡');insert into DISTRICT (id, parent_id, name)values (11, 8, '胡家镇');insert into DISTRICT (id, parent_id, name)values (12, 8, '南坝镇');insert into DISTRICT (id, parent_id, name)values (13, 6, '大寨乡');insert into DISTRICT (id, parent_id, name)values (14, 6, '响滩镇');insert into DISTRICT (id, parent_id, name)values (15, 6, '龙岗镇');insert into DISTRICT (id, parent_id, name)values (16, 6, '白衣镇');commit;

Oracle递归查询

二、start with connect by prior递归

  1. 查询所有子节点

SELECT *
FROM district
START WITH NAME ='巴中市'
CONNECT BY PRioR ID=parent_id


Oracle递归查询

2.2、查询所有父节点

SELECT *
FROM district
START WITH NAME ='平昌县'
CONNECT BY PRIOR parent_id=ID


只需要交换 id 与parent_id的位置即可


Oracle递归查询



2.3、查询指定节点的,根节点

Oracle递归查询

SELECT d.*,
connect_by_root(d.id),
connect_by_root(NAME)FROM district dWHERE NAME='平昌县'START WITH d.parent_id=1    --d.parent_id is null 结果为四川省CONNECT BY PRIOR d.ID=d.parent_id

Oracle递归查询

Oracle递归查询

2.4、查询巴中市下行政组织递归路径

 

SELECT ID,parent_id,NAME,
sys_connect_by_path(NAME,'->') namepath,LEVELFROM district 
START WITH NAME='巴中市'CONNECT BY PRIOR ID=parent_id

Oracle递归查询

三、with递归

3.1、with递归子类

 

Oracle递归查询

WITH t (ID ,parent_id,NAME) --要有列名AS(SELECT ID ,parent_id,NAME FROM district WHERE NAME='巴中市'UNION ALLSELECT d.ID ,d.parent_id,d.NAME FROM t,district d --要指定表和列表,WHERE t.id=d.parent_id
)SELECT * FROM t;

Oracle递归查询

 

Oracle递归查询

3.2、递归父类

Oracle递归查询

WITH t (ID ,parent_id,NAME) --要有表AS(SELECT ID ,parent_id,NAME FROM district WHERE NAME='通江县'UNION ALLSELECT d.ID ,d.parent_id,d.NAME FROM t,district d --要指定表和列表,WHERE t.parent_id=d.id
)SELECT * FROM t;

Oracle递归查询

Oracle递归查询

 



您可能感兴趣的文档:

--结束END--

本文标题: Oracle递归查询

本文链接: https://www.lsjlt.com/news/38758.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Oracle递归查询connect by用法
    目录一、概述1、层级查询的基本语法:二、使用1、基本用法2、SYS_CONNECT_BY_PATH() 函数3、CONNECT_BY_ISLEAF 伪列4、CONNECT_BY_RO...
    99+
    2024-04-02
  • Oracle递归查询简单示例
    目录1 数据准备2 start with connect by prior递归查询2.1 查询所有子节点2.2 查询所有父节点2.3 查询指定节点的,根节点2.4 查询巴中市下行政组织递归路径3 with递归查询3.1 ...
    99+
    2024-04-02
  • Oracle递归查询树形数据
    概述 实际生活有很多树形结构的数据,比如公司分为多个部门,部门下分为多个组,组下分为多个员工;省市县的归属;页面菜单栏等等。 如果想查询某个节点的父节点或者子节点,一般通过表自身连接完成,但如果该节点...
    99+
    2023-09-07
    oracle mysql sql
  • mysql5.7递归查询
    MySQL 5.7支持递归查询,这种查询方式可以在一个表中查找具有父子关系的数据。递归查询通常使用WITH RECURSIVE语句进行构造。这个语句使用两个部分:递归部分和终止部分。递归部分定义了递归查询的开始条件和递归关系,而终止部分定义...
    99+
    2023-09-09
    mysql 数据库 sql
  • oracle递归查询和迭代查询有什么不同
    递归查询和迭代查询是两种不同的查询方式,它们的主要区别如下:1. 实现方式:递归查询是通过递归调用自身来进行查询操作,而迭代查询是通...
    99+
    2023-08-15
    oracle
  • MySQL5.7 实现递归查询
    创建测试环境 在线数据库 http://sqlfiddle.com/   1. 创建表 DROP TABLE IF EXISTS `dept`;CREATE TABLE `dept` ( `id` varchar(10) CH...
    99+
    2023-08-18
    数据库 mysql java
  • Oracle递归查询start with connect by prior怎么用
    这篇文章主要介绍Oracle递归查询start with connect by prior怎么用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一、基本语法connect by递归查询...
    99+
    2024-04-02
  • oracle递归查询数据报错怎么解决
    在Oracle中进行递归查询时,可能会遇到报错的情况。一种常见的报错是ORA-01436: 连接到你给出的Level 1的视图,但在...
    99+
    2024-04-09
    oracle
  • Oracle递归查询树形数据实例代码
    目录概述1、数据准备2 start with connect by prior递归查询2.1 查询所有子节点2.2 查询所有父节点2.3 查询指定节点的根节点2.4 查询下行政组织递归路径3 with递归查询3.1 wi...
    99+
    2024-04-02
  • oracle递归查询所有子节点怎么实现
    实现Oracle递归查询所有子节点可以通过使用CONNECT BY子句来实现。CONNECT BY子句用于在查询结果中递归地查找子节...
    99+
    2024-04-09
    oracle
  • Mysql8.0递归查询的简单用法
    这篇文章主要介绍“Mysql8.0递归查询的简单用法”,在日常操作中,相信很多人在Mysql8.0递归查询的简单用法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Mysql8.0递归查询的简单用法”的疑惑有所...
    99+
    2023-06-20
  • mysql实现递归查询的方法
    小编给大家分享一下mysql实现递归查询的方法,希望大家阅读完这篇文章后大所收获,下面让我们一起去探讨吧!mysql实现递归查询的方法:首先创建表,并初始化数据;然后向下递归,利用【find_in_set(...
    99+
    2024-04-02
  • MySQL中怎么实现递归查询
    本篇文章给大家分享的是有关MySQL中怎么实现递归查询,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。Oracle 递归查询在 Oracle 中...
    99+
    2024-04-02
  • PostgreSQL中怎么实现递归查询
    本篇文章给大家分享的是有关PostgreSQL中怎么实现递归查询,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。在内部,它是这样表示滴:&nbs...
    99+
    2024-04-02
  • SQL中怎么实现递归查询
    SQL中怎么实现递归查询,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。 with cte as(selec&#...
    99+
    2024-04-02
  • MySQL递归查询的方法有哪些
    在MySQL中,可以使用以下方法来实现递归查询: 使用存储过程:可以通过编写存储过程来实现递归查询。存储过程可以递归地调用自身来...
    99+
    2024-04-30
    MySQL
  • mysql怎样递归查询所有数据
    小编给大家分享一下mysql怎样递归查询所有数据,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!mysql递归查询所有数据的方法:...
    99+
    2024-04-02
  • sql server中怎么实现递归查询
    sql server中怎么实现递归查询,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。sql server 通过CTE来支持递归查询,这对查...
    99+
    2024-04-02
  • MySQL数据库的递归查询with recursive
    原因:         当我们在实际的开发流程中,我们会遇到需要递归查询的一些数据,例如:课程分类表是一个树型结构,其中parentid字段为父结点ID,它是树型结构的标志字段。 如果树的层级固定可以使用表的自链接去查询,比如:我们只查询两...
    99+
    2023-09-08
    sql 数据库
  • 怎么在Oracle中实现递归树形结构查询功能
    这篇文章给大家介绍怎么在Oracle中实现递归树形结构查询功能,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。oracle树状结构查询即层次递归查询,是sql语句经常用到的,在实际开发中...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作