文档章节

PG里的层次查询方法

GameKing
 GameKing
发布于 2015/05/12 16:18
字数 357
阅读 33
收藏 1

    今天开发人员咨询,他们项目有张表,表中的记录有父子关系,根据父记录ID,如何查询所有
子节点的记录, PG里是否有方法可以实现, 听到这,我还是第一次碰到PG的这种问题,想到Oracle
是有方法实现的,查询语法如下:

--像oracle里,查询语法如下
select * from aclorgtreeinfo
start with orgid = '06e0d0bb1389a196011389b31abd0002'
connect by prior orgid = parentorgid;

     后来查了些文档发现PG里可以利用递归查询实现,具体用法可以参考
http://www.postgresql.org/docs/8.4/static/queries-with.html,  以下是具体测试过程。

--创建测试表,并插入测试记录
create table emp (empid integer,empparid integer,empname varchar(32));
insert into emp values (001,nul,'CEO');
insert into emp values (002,001,'CTO');
insert into emp values (003,001,'CFO');
insert into emp values (004,001,'OOO');
insert into emp values (005,002,'MANAGER');

mydb=> select * from emp;
 empid | empparid | empname 
-------+----------+---------
     2 |        1 | CTO
     3 |        1 | CFO
     4 |        1 | OOO
     5 |        2 | MANAGER
    

--查询empid=2下的所有记录
WITH RECURSIVE r AS ( 
       SELECT * FROM emp WHERE empid = 2 
     union   ALL 
       SELECT emp.* FROM emp, r WHERE emp.empparid = r.empid 
     ) 
SELECT * FROM r ORDER BY empid;

 empid | empparid | empname 
-------+----------+---------
     2 |        1 | CTO
     5 |        2 | MANAGER
(2 rows)

           从结果看出,果然功能实现了,"WITH RECURSIVE"有个特点,它不立即将执行结果输出,而是需要再通过
  SELECT命令将结果输出到终端。
   
   最后将以上方法告诉开发人员,开发人员开心死了 ^_^

本文转载自:http://francs3.blog.163.com/blog/static/40576727201011815721822/

共有 人打赏支持
GameKing
粉丝 22
博文 20
码字总数 20400
作品 1
杭州
程序员
PostgreSQL 9.x, 10, 11 hash分区表 用法举例

标签 PostgreSQL , 分区表 , 优化器 , 分区过滤 , hash 分区 背景 PostgreSQL 10开始内置分区表语法,当时只支持了range,list两种分区,实际上可以通过LIST实现HASH分区。 PostgreSQL 10 ha...

德哥
07/28
0
0
PostgreSQL并发控制(MVCC, 事务,事务隔离级别)

基于PostgreSQL9.4 9.3中文文档:http://58.58.27.50:8079/doc/html/9.3.1zh/mvcc.html 9.4中文文档:http://www.postgresql.org/docs/9.4/static/mvcc.html 本文描述PostgreSQL数据库系统在......

YuanyuanL
2015/08/27
0
9
查看Postgresql的连接状况

今天遇到一个问题,就是pg一直报错,说有太多的客户端连接到数据库上面。但现在不知道是什么程序连接。pg默认的max_connection是100,我并没有修改过,以为平时公司内部用,应该够了,但现在...

CLLam
2013/06/17
0
3
数据库案例集锦 - 开发者的《如来神掌》

标签 PostgreSQL , PG DBA cookbook , PG Oracle兼容性 , PG 架构师 cookbook , PG 开发者 cookbook , PG 应用案例 背景 「剑魔独孤求败,纵横江湖三十馀载,杀尽仇寇,败尽英雄,天下更无抗...

德哥
2017/06/09
0
0
PostgresSQL-规划器使用的统计信息

13.2. 规划器使用的统计信息 就象我们在上一节里展示的那样,查询规划器需要估计一个查询检索的行的数目,这样才能选择正确的查询规划。 本节就系统用于这些估计的统计进行一些描述。 统计的...

angie_hawk7
2015/01/30
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

day60-20180818-流利阅读笔记-待学习

钉钉:工作的归工作,生活的…也归工作? 毛西 2018-08-18 1.今日导读 你用过“钉钉”么?被公司要求使用钉钉的感受是如何的呢?这款阿里巴巴旗下的移动办公社交平台在弯道超车微信、为许多企...

aibinxiao
50分钟前
8
0
Kubernetes的HTTPS和证书问题,汇总

通过Kubernetes建立服务网站,需要干的事情和HTTPS和证书问题,汇总如下: 建立Nginx服务器 搞服务器第一步,Ubuntu 18.04设置静态IP 安装Nginx服务。 Kubernetes的deployment使用 创建服务,...

openthings
今天
2
0
php 使用redis锁限制并发访问类

1.并发访问限制问题 对于一些需要限制同一个用户并发访问的场景,如果用户并发请求多次,而服务器处理没有加锁限制,用户则可以多次请求成功。 例如换领优惠券,如果用户同一时间并发提交换领...

豆花饭烧土豆
今天
0
0
Linux环境搭建 | 手把手教你配置Linux虚拟机

在上一节 「手把你教你安装Linux虚拟机」 里,我们已经安装好了Linux虚拟机,在这一节里,我们将配置安装好的Linux虚拟机,使其达到可以开发的程度。 Ubuntu刚安装完毕之后,还无法进行开发,...

良许Linux
今天
0
0
(三)Nginx配置·续

概述 前文写了关于Nginx环境配置,但是还没有完,接下来将会继续讲三个相关的配置 主要是以下三个 1.Nginx访问日志 2.Nginx日志切割 3.静态文件不记录日志和过期时间 Nginx访问日志 1.先看看...

杉下
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部