zoukankan      html  css  js  c++  java
  • PostgreSQL 递归查询 (转)

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

  • 相关阅读:
    连接池——tomcat自带连接池。
    jsp小记
    结合properties配置文件优化jdbc连接工具类
    StringBuffer
    多重继承关系初始化顺序及初始化
    Error
    算法:插入排序
    算法:冒泡排序
    算法:选择排序
    注册Activity
  • 原文地址:https://www.cnblogs.com/supiaopiao/p/9018780.html
Copyright © 2011-2022 走看看