当前位置: 首页 > news >正文

Oracle递归查询层级及路径

一、建表及插入数据

ocation_idlocation_nameparent_location_id
1广东省NULL
2广州市1
3深圳市1
4天河区2
5番禺区2
6南山区3
7宝安区3

建表sql:

CREATE TABLE locations (location_id NUMBER PRIMARY KEY,location_name VARCHAR2(100),parent_location_id NUMBER
);
INSERT INTO locations (location_id, location_name, parent_location_id)
VALUES (1, '广东省', NULL);INSERT INTO locations (location_id, location_name, parent_location_id)
VALUES (2, '广州市', 1);INSERT INTO locations (location_id, location_name, parent_location_id)
VALUES (3, '深圳市', 1);INSERT INTO locations (location_id, location_name, parent_location_id)
VALUES (4, '天河区', 2);INSERT INTO locations (location_id, location_name, parent_location_id)
VALUES (5, '番禺区', 2);INSERT INTO locations (location_id, location_name, parent_location_id)
VALUES (6, '南山区', 3);INSERT INTO locations (location_id, location_name, parent_location_id)
VALUES (7, '宝安区', 3);

二、展现出省市县之间的层级结构

sql:

SELECT location_id, location_name, LEVEL
FROM locations
CONNECT BY PRIOR location_id = parent_location_id
START WITH parent_location_id IS NULL;

结果:

location_idlocation_nameLEVEL
1广东省1
2广州市2
4天河区3
5番禺区3
3深圳市2
6南山区3
7宝安区3

三、每个区域在层级结构中的完整路径

sql:

SELECT location_id, location_name, LEVEL, SYS_CONNECT_BY_PATH(location_name,'/') AS path
FROM locations
CONNECT BY PRIOR location_id = parent_location_id
START WITH parent_location_id IS NULL;

结果:

location_idlocation_nameLEVELpath
1广东省1广东省
2广州市2广东省/广州市
4天河区3广东省/广州市/天河区
5番禺区3广东省/广州市/番禺区
3深圳市2广东省/深圳市
6南山区3广东省/深圳市/南山区
7宝安区3广东省/深圳市/宝安区
http://www.lryc.cn/news/423261.html

相关文章:

  • leetcode300. 最长递增子序列,动态规划附状态转移方程
  • C语言:字符串函数strcpy
  • Day16-指针2
  • 数据结构(5.5_3)——并查集的进一步优化
  • (回溯) LeetCode 131. 分割回文串
  • 【Linux】阻塞信号|信号原理|深入理解捕获信号|内核态|用户态|sigaction|可重入函数|volatile|SIGCHILD|万字详解
  • 基于Linux对 【进程地址空间】的详细讲解
  • [python]使用Pandas处理多个Excel文件并汇总数据
  • 提升体验:UI设计的可用性原则
  • x264 编码器 SSIM 算法源码分析
  • echarts使图表组件根据屏幕尺寸变更而重新渲染大小
  • 电脑图片损坏打不开怎么办?能修复吗?
  • vue-cli(二)
  • 今日头条的账号id在哪里看(网页版)
  • 单体应用提高性能和高并发处理-合理使用多核处理
  • 基于STM32/GD32的双CAN、一路485开发板
  • 快排/堆排/归并/冒泡/
  • React基础教程(08):state体验
  • Win10 创建新的桌面2,并实现桌面切换
  • MySQL数据库介绍及基础操作
  • 【C语言篇】C语言常考及易错题整理DAY2
  • javase入门
  • Wireshark显示过滤器大全:快速定位网络流量中的关键数据包
  • OOP笔记4----抽象类、接口、枚举
  • MySQL面试题全解析:准备面试所需的关键知识点和实战经验
  • 01_Electron 跨平台桌面应用开发介绍
  • 【C语言-扫雷游戏】mineweeper【未完成】
  • psychopy stroop 实验设计
  • c++精品小游戏(无错畅玩版)
  • 应急响应-主机安全之系统及进程排查相关命令(Linux操作系统-初级篇)