Oracle递归查询层级及路径

一、建表及插入数据

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

建表sql:

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:

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_id location_name LEVEL
1 广东省 1
2 广州市 2
4 天河区 3
5 番禺区 3
3 深圳市 2
6 南山区 3
7 宝安区 3

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

sql:

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_id location_name LEVEL path
1 广东省 1 广东省
2 广州市 2 广东省/广州市
4 天河区 3 广东省/广州市/天河区
5 番禺区 3 广东省/广州市/番禺区
3 深圳市 2 广东省/深圳市
6 南山区 3 广东省/深圳市/南山区
7 宝安区 3 广东省/深圳市/宝安区
相关推荐
Saniffer_SH4 分钟前
【每日一题】讲讲PCIe链路训练和枚举的前后关系
运维·服务器·网络·数据库·驱动开发·fpga开发·硬件工程
倔强的石头_14 分钟前
金融行业数据库选型盘点——Kingbase PLSQL迁移指南
数据库
梓沂14 分钟前
解决项目容器启动时MySQL端口检测的问题
数据库·mysql
计算机毕设VX:Fegn089527 分钟前
计算机毕业设计|基于Java + vue水果商城系统(源码+数据库+文档)
java·开发语言·数据库·vue.js·spring boot·课程设计
川贝枇杷膏cbppg37 分钟前
DmServiceDMSERVER.log是干嘛的
java·服务器·数据库
SHANGHAILINGEN43 分钟前
植物三维基因组综合数据库——3D-GDP
数据库
木风小助理1 小时前
子查询与 JOIN 查询性能比较:执行机制与适用场景解析
数据库·sql·mysql
九章-1 小时前
智慧文旅信创落地新标杆:四川省文旅厅完成MySQL 5.7平滑替换,筑牢省级管理平台自主可控底座
数据库·mysql
蟹至之2 小时前
【MySQL】事务
数据库·mysql·事务
ao_lang2 小时前
数据库范式
数据库·mysql