千家信息网

Oracle如何实现层次化查询

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,小编给大家分享一下Oracle如何实现层次化查询,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!Oracle层次化查询(1)
千家信息网最后更新 2026年11月02日Oracle如何实现层次化查询

小编给大家分享一下Oracle如何实现层次化查询,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

Oracle层次化查询

(1) 树状模型

假如有一个市场模型,其中一级市场是中国,二级市场是省份,三级市场是各个省下面的市,四级市场是各个市下面的县。那么可以创建表market:

create table market(market_id number(2), market_name varchar2(10), parent_market_id number(2));

insert all

into market values(1, 'China', 0)

into market values(2, 'Shan Xi', 1)

into market values(3, 'Shan Dong', 1)

into market values(4, 'Fu Jian', 1)

into market values(5, 'Tai Yuan', 2)

into market values(6, 'Yang Quan', 2)

into market values(7, 'Qi Zhou', 2)

into market values(8, 'Qing Dao', 3)

into market values(9, 'Ji Nan', 3)

into market values(10, 'Yan Tai', 3)

into market values(11, 'Xia Men', 4)

into market values(12, 'Fu Zhou', 4)

into market values(13, 'Quan Zhou', 4)

into market values(14, 'Gu Jiao', 5)

into market values(15, 'Yang Qu', 5)

into market values(16, 'Qing Xu', 5)

select * from dual;

(2) 层次化查询

select market_id, market_name

from market

start with market_name = 'Shan Xi'

connect by prior market_id = parent_market_id;

MARKET_ID MARKET_NAME

---------- ------------------------------

2 Shan Xi

5 Tai Yuan

14 Gu Jiao

15 Yang Qu

16 Qing Xu

6 Yang Quan

7 Qi Zhou

7 rows selected.

这里的搜索规则为:从'Shan Xi'节点开始搜索、前一个节点的market_id等于下一个节点的parent_markket_id。

(3) 相关函数

显示搜索路径的函数为

sys_connect_by_path(列名,分隔符)

示例:

select market_id, market_name, sys_connect_by_path(market_name, '/') as market_path

from market

start with market_name = 'Gu Jiao'

connect by prior parent_market_id = market_id;

MARKET_ID MARKET_NAM MARKET_PATH

---------- ---------- ----------------------------------------

14 Gu Jiao /Gu Jiao

5 Tai Yuan /Gu Jiao/Tai Yuan

2 Shan Xi /Gu Jiao/Tai Yuan/Shan Xi

1 China /Gu Jiao/Tai Yuan/Shan Xi/China

这里可以利用max()函数来获得完整的路径:

select max(sys_connect_by_path(market_name, '/')) market_path

from market

start with market_name = 'Gu Jiao'

connect by prior parent_market_id = market_id;

MARKET_PATH

----------------------------------------

以上是"Oracle如何实现层次化查询"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!

市场 层次 查询 函数 篇文章 节点 搜索 内容 模型 路径 面的 不怎么 分隔符 大部分 更多 省份 知识 示例 行业 规则 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 瑰夏咖啡 百单网互联网科技有限公司怎么样 互联网的科技 科技股互联网 A股互联网金融科技公司 关于新基建和互联网科技 上海互联网科技有限公司 小马过河互联网科技 上海电发互联网科技有限公司 互联网汽车科技小镇 互联网金融科技公司干啥的 河南猎农互联网科技有限公司 晓花互联网科技有限公司网址 注册互联网科技公司经营范围大全 高科技互联网发展前景如何 互联网科技融合创新 互联网公司属于科技吗 北京天晋互联网科技有限公司 互联网高科技绘画 知域互联网科技有限公司官网 手冲咖啡和咖啡机区别 什么是科技互联网 佛山市翊博互联网络科技有限公司 工业互联网等科技实现智能化赋能 烟台灵鸽互联网科技有限公司 江苏苏星互联网科技有限公司 福建互联网展示科技馆设计 科技信息时代互联网发展 绵阳真晨互联网科技有限公司 安徽九吞吴互联网科技有限公司
0