怎么用PostgreSQL对树进行遍历
发表于:2025-11-07 作者:千家信息网编辑
千家信息网最后更新 2025年11月07日,本篇内容介绍了"怎么用PostgreSQL对树进行遍历"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
千家信息网最后更新 2025年11月07日怎么用PostgreSQL对树进行遍历
本篇内容介绍了"怎么用PostgreSQL对树进行遍历"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
昨天我用MySQL来实现了ORACLE的递归语句CONNECT BY, 看起来稍复杂些。今天来看看POSTGRESQL如何实现ORACLE的CONNECT BY。
还是用昨天同样的表以及数据。POSTGRESQL自诩最像ORACLE的数据库,所以大部分语句也就都可以简单而且变相的实现了。
在这点上可以用他自己带的WITH递归功能,还可以用第三方扩展带来的类似connect by 函数。
先来看第一点,用递归的WITH来展现这棵树的路径。
t_girl=# with recursive tmp_country(id,path) as t_girl-# (t_girl(# select a.id,'/'||b.name as "path" from country_relation as a inner join country as b on (a.id = b.id) where a.parentid is nullt_girl(# union allt_girl(# select a.id,q.path||'/'||b.name as "path" from country_relation as a inner join tmp_country as q on (q.id = a.parentid)t_girl(# inner join country as b on (a.id = b.id)t_girl(# )t_girl-# select a.path from tmp_country as a; path ----------------------------------------------- /Earth /Earth/North America /Earth/South America /Earth/Europe /Earth/Asia /Earth/Africa /Earth/Australia /Earth/North America/Canada /Earth/North America/Central America /Earth/North America/Island Nations /Earth/North America/United States /Earth/North America/United States/Alabama /Earth/North America/United States/Alaska /Earth/North America/United States/Arizona /Earth/North America/United States/Arkansas /Earth/North America/United States/California(16 rows)Time: 3.260 ms
还可以用tablefunc扩展带来的CONNECT BY函数把这棵树遍历出来。
由于昨天设计的两张表通过ID来关联,这个扩展自带的函数要把名字展现出来比较麻烦,索性这里我就用了一张临时表保存我想要的结果。
t_girl=# CREATE TEMPORARY TABLE tmp_country_relation as SELECT b.id,a.name,b.parentid,''::text as parentname FROM country AS a,country_relation AS b WHERE a.id = b.id; SELECT 16Time: 11.773 mst_girl=#
这里更新了对应的ID为NAME。
t_girl=# update tmp_country_relation set parentname = a.name from country as a where parentid = a.id;UPDATE 15Time: 1.829 ms
我用TABLEFUNC扩展带来的CONNECT BY 实现这棵树的遍历。
t_girl=# select path from connectby('tmp_country_relation as a','a.name','a.parentname','Earth',0,'/') as g(id text,parentid text,level int,path text) order by level; path ---------------------------------------------- Earth Earth/Australia Earth/North America Earth/Africa Earth/South America Earth/Europe Earth/Asia Earth/North America/Island Nations Earth/North America/Canada Earth/North America/Central America Earth/North America/United States Earth/North America/United States/California Earth/North America/United States/Arkansas Earth/North America/United States/Alabama Earth/North America/United States/Alaska Earth/North America/United States/Arizona(16 rows)Time: 5.974 mst_girl=#"怎么用PostgreSQL对树进行遍历"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!
函数
递归
内容
数据
更多
知识
语句
复杂
实用
学有所成
接下来
功能
名字
困境
大部分
实际
情况
数据库
文章
案例
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
vpn服务器ip
当今信息技术和网络技术的理解
数据库是场外吗
AS软件开发研究基地
网络安全第一季度会议
服务器网络迁移方案
学习网络安全教程视频
域名服务器的类型有
网页打不开提示找不到服务器
血猎与第三方服务器连接失败
网络安全宣传片的意义
服务器CDB是什么
psql语录连接数据库
数据库中的多线程
网络技术有两个指标
数据库的完整性简答
qt连接数据库没有密码怎么设置
一个战网同一个服务器
采购系统 数据库
服务器网络安全责任书
合肥app软件开发多少钱
青岛小樱教育网络技术有限公司
戴尔服务器硬件管理软件
网络安全课程建设
盐城市网络安全大赛
方舟服务器为什么总是闪退
金融贷款风控大数据库
河南网络安全宣传周专题
为啥登不进国际服显示没有服务器
竹溪服务软件开发案例