PostgreSQL如何实现类似Oracle中的家族树功能
2018-06-17 20:06:33来源:未知 阅读 ()
先来设计一下表结构:
create table city(id varchar(3) , pid varchar(3) , name varchar(10));
下面我们造几条测试数据:
INSERT INTO city values('001','0','宁波市');
INSERT INTO city values('002','001','镇海区');
INSERT INTO city values('003','001','北仑区');
INSERT INTO city values('004','001','江北区');
INSERT INTO city values('005','002','骆驼街道');
INSERT INTO city values('006','002','招宝山街道');
INSERT INTO city values('007','002','蛟川街道');
INSERT INTO city values('007','003','小港街道');
下面是递归查询生成树状结构的查询语名:
with recursive t(id,name,pid,path,depth) as(
select id,name,pid,id::text path,1 depth from city where pid='0'
union
select a.id,a.name,a.pid,b.path||a.id path,b.depth+1 depth from city a,t b where a.pid=b.id
)select * from t order by path;
最终效果如下:
递归原理如下:
第一步,会得到 select id,name,pid,id::text path,1 depth from city where pid='0' 一条记录,并放在t中
第二步,再执行 select a.id,a.name,a.pid,b.path||a.id path,b.depth+1 depth from city a,t b where a.pid=b.id 放入t中,
之后不断循环第二步直到条件无法匹配。
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:DB2数据库创建数据库操作过程
下一篇:SQLite 带你入门
- 小白如何入门 Python 爬虫? 2019-08-13
- python day2-爬虫实现github登录 2019-08-13
- 我是如何自学python到找到高薪工作 2019-07-24
- 如何使用Python脚本分析CPU使用情况的? 2019-07-24
- python+selenium实现自动化百度搜索关键词 2019-07-24
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash