加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

PostgreSQL

发布时间:2020-12-13 18:08:53 所属栏目:百科 来源:网络整理
导读:数据库中的数据存在父子关系(单继承,每一条记录只有一个父亲). 如果要查询一条记录以及他的所有子记录,或者要查询一条记录以及他的所有父记录.那么递归查询就再合适不过了.可以简化复杂的SQL语句 现在数据库有一张Place表,用于存放中国的地区信息. CREATE TA

数据库中的数据存在父子关系(单继承,每一条记录只有一个父亲). 如果要查询一条记录以及他的所有子记录,或者要查询一条记录以及他的所有父记录.那么递归查询就再合适不过了.可以简化复杂的SQL语句

现在数据库有一张Place表,用于存放中国的地区信息.


CREATE TABLE place
(
  id serial NOT NULL,--主键
  name character varying(200),--地区名
  parent_id bigint,--外键 父地区
  CONSTRAINT place_pkey PRIMARY KEY (id) --主键约束
)


数据库数据如下


向下递归

查询安徽以及安徽一下的所有记录


WITH RECURSIVE r AS ( 
       SELECT * FROM place WHERE id = 2
     union   ALL 
       SELECT place.* FROM place,r WHERE place.parent_id = r.id 
     ) 
SELECT * FROM r ORDER BY id;

查询结果如下


向上递归

查询三亚以及三亚以上所有记录

WITH RECURSIVE r AS ( 
       SELECT * FROM place WHERE id = 8
     union   ALL 
       SELECT place.* FROM place,r WHERE place.id = r.parent_id 
     ) 
SELECT * FROM r ORDER BY id;
查询结果如下


转载至:https://my.oschina.net/kenshiro/blog/160129

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读