postgresql 递归查询与数据集拼接

postgresql 递归查询与数据集拼接,第1张

概述    群里的一个兄弟提到了这样一个关于在postgresql查询语句的问题: 一个表里面有三个字段,分别是id,parentid,name。现在给一个id,如何写一个函数,查询到一个结果,就是整个链子的名字的组合,就是给一个id,找他的parentid 一直找下去 最后返回他们的名字组合,例如:name3_name2_name1,循环终止的条件是parentid=0 。         基本上是

群里的一个兄弟提到了这样一个关于在postgreSQL查询语句的问题:

一个表里面有三个字段,分别是ID,parentID,name。现在给一个ID,如何写一个函数,查询到一个结果,就是整个链子的名字的组合,就是给一个ID,找他的parentID 一直找下去 最后返回他们的名字组合,例如:name3_name2_name1,循环终止的条件是parentID=0。

基本上是一个多级的表结构,比较常见于权限设计和分类目录设计里。
基本的表结构就是 category(ID,name,parentID)

要解决这个问题主要有三个步骤:

1. 递归查询获取结果集:with recursive
2. 结果集转为数组:array()
3. 数组拼接为结果:array_to_string(Array,"_")

查询语句如下:

select	array_to_string        (        ARRAY   (		with recursive pp as   (			select ID,parentID from t_admin_power where ID=10			union all			select p.ID,p.name,p.parentID from t_admin_power p inner join pp on p.ID=pp.parentID		)		select name from pp),'_'	) as concat


当然性能不一定很好,还有没有更好的方法?

总结

以上是内存溢出为你收集整理的postgresql 递归查询与数据集拼接全部内容,希望文章能够帮你解决postgresql 递归查询与数据集拼接所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/1178136.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-02
下一篇 2022-06-02

发表评论

登录后才能评论

评论列表(0条)

保存