微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

PostgreSQL递归查询

原料

分享图片

--创建组织架构表
create table "Org"(
    "OrgId" character varying(50) primary key,"ParentId" character varying(50),"OrgName" character varying(50)
)
--添加数据
insert into "Org" ("OrgId","ParentId","OrgName") values(00,null,***集团);
insert into "Org" ("OrgId","OrgName") values(01,00,子公司01);
insert into "Org" ("OrgId","OrgName") values(02,子公司02);
insert into "Org" ("OrgId","OrgName") values(03,子公司03);
insert into "Org" ("OrgId","OrgName") values(04,子公司04);

insert into "Org" ("OrgId","OrgName") values(0101,01,电子商务部);
insert into "Org" ("OrgId","OrgName") values(0102,渠道合作部);
insert into "Org" ("OrgId","OrgName") values(0103,个人业务部);
insert into "Org" ("OrgId","OrgName") values(0104,人力资源部);
insert into "Org" ("OrgId","OrgName") values(0105,运营管理部);

insert into "Org" ("OrgId","OrgName") values(0201,02,"OrgName") values(0202,"OrgName") values(0203,"OrgName") values(0204,"OrgName") values(0205,"OrgName") values(0301,03,"OrgName") values(0302,"OrgName") values(0303,"OrgName") values(0304,"OrgName") values(0305,"OrgName") values(0401,04,"OrgName") values(0402,"OrgName") values(0403,"OrgName") values(0404,"OrgName") values(0405,运营管理部);
View Code

向下递归

--向下递归
with recursive T ("OrgId","OrgName","Depth")  AS 
(
    select "OrgId",1 "Depth" from "Org" where "OrgId"=01  --起始节点
    union all
    select  D."OrgId",D."ParentId",D."OrgName",T."Depth" + 1 "Depth" from "Org" D join T on D."ParentId" = T."OrgId"
)
select "OrgId","Depth" from T

输出结果:

分享图片

 

向上递归

--向上递归
with recursive T ("OrgId",1 "Depth" from "Org" where "OrgId"=0105  --起始节点
    union all
    select  D."OrgId",T."Depth" + 1 "Depth" from "Org" D join T on D."OrgId" = T."ParentId"
)
select "OrgId","Depth" from T

输出结果:

分享图片

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐