欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 科技 > IT业 > Oracle递归查询层级及路径

Oracle递归查询层级及路径

2024/10/24 23:25:22 来源:https://blog.csdn.net/m0_48972623/article/details/141034538  浏览:    关键词: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广东省/深圳市/宝安区

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com