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 null

t_girl(# union all

t_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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值