1.表结构

2.需求

查询某条记录的所有父亲节点,或者所有孩子节点。

3.向上查询(查询所有父亲节点)

注意,这里返回的记录包含自己。

sql如下:

 WITH RECURSIVE res AS (
SELECT t1.* FROM t_code as t1
WHERE t1.enable = 'true' and t1.id = '' UNION
SELECT t2.* from t_code as t2
INNER JOIN res as t3 ON t2.id = t3.parent_id
WHERE t2.enable = 'true'
)SELECT res.* from res

返回结果:

4.向下查询(查询所有孩子节点)

注意,这里返回的记录包含自己。

和上面的sql只有一个差别:

 INNER JOIN res as t3 ON t3.id = t2.parent_id

sql如下:

 WITH RECURSIVE res AS (
SELECT t1.* FROM t_code as t1
WHERE t1.enable = 'true' and t1.id = '' UNION
SELECT t2.* from t_code as t2
INNER JOIN res as t3 ON t3.id = t2.parent_id
WHERE t2.enable = 'true'
)SELECT res.* from res

返回结果:

综上所述,可以将这段sql看做三个部分组成:(1)初始条件。(2)迭代条件。(3)将结果作为下一个迭代的初始条件。

其中迭代条件中,写作 INNER JOIN res as t3 ON t3.id = t2.parent_id 时,是表示上一次查询的结果(t3)是此时查询记录(t2)的父亲。即始终是用parent来查询children,为向下查询。

2017.12.07 postgresql使用with recursive完成迭代查询的更多相关文章

  1. filddler一个抓包修改的工具 貌似很强大2017.12.07

    filddler直接百度下载  还没弄懂怎么用  有待研究!

  2. Gitlab一键端的安装汉化及问题解决(2017/12/14目前版本为10.2.4)

    Gitlab的安装汉化及问题解决 一.前言 Gitlab需要安装的包太TM多了,源码安装能愁死个人,一直出错,后来发现几行命令就装的真是遇到的新大陆一样... ... 装完之后感觉太简单,加了汉化补丁 ...

  3. 2017.12.25 Mybatis物理分页插件PageHelper的使用(二)

    参考来自: 官方文档的说明:https://github.com/pagehelper/Mybatis-PageHelper/blob/master/wikis/zh/HowToUse.md 上篇博客 ...

  4. 【2017.12.12】deepin安装U盘制作,支持 BIOS+UEFI,deepin_Recovery+Win PE

    U盘要求为 FAT32,MBR分区表 如果需要放 4GB 大文件,可以分两个分区,第一分区FAT32格式,放启动相关文件,第二个分区用 NTFS 格式,放其它资料. 最新 Win10 支持显示 U盘 ...

  5. 2017.12.21-JQuery

    作业:密码加强验证 <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> & ...

  6. [LOJ#6259]「CodePlus 2017 12 月赛」白金元首与独舞

    [LOJ#6259]「CodePlus 2017 12 月赛」白金元首与独舞 试题描述 到河北省 见斯大林 / 在月光下 你的背影 / 让我们一起跳舞吧 うそだよ~ 河北省怎么可能有 Stalin. ...

  7. java一周学习记录(2017/12/2)

    姓名:Danny                               日期:2017/12/2 周日 周一 周二 周三 周四 周五 周六 所花时间 120 150 190 150 180 28 ...

  8. 2021.12.07 [TJOI2013]最长上升子序列(Treap+DP)

    2021.12.07 [TJOI2013]最长上升子序列(Treap+DP) https://www.luogu.com.cn/problem/P4309 题意: 给定一个序列,初始为空.现在我们将1 ...

  9. 2021.12.07 P4291 [HAOI2008]排名系统(Treap)

    2021.12.07 P4291 [HAOI2008]排名系统(Treap) https://www.luogu.com.cn/problem/P4291 双倍经验: https://www.luog ...

随机推荐

  1. /usr/bin/expect介绍

    /usr/bin/expect介绍 http://blog.csdn.net/zhu_tianwei/article/details/44180637 概述 我们通过Shell可以实现简单的控制流功能 ...

  2. Hibernate 和 Mybatis的区别

    第一方面:开发速度的对比 就开发速度而言,Hibernate的真正掌握要比Mybatis来得难些.Mybatis框架相对简单很容易上手,但也相对简陋些.个人觉得要用好Mybatis还是首先要先理解好H ...

  3. BZOJ 3038 上帝造题的七分钟二

    无题目 但是百度会发现题目和3211基本一致 所以看上一篇博文的上一篇博文呢

  4. kafka 分区数

    Kafka的分区,相当于把一个Topic再细分成了多个通道(对应 多个线程) 部署的时候尽量做到一个消费者(线程)对应一个分区. 如何确定Kafka的分区数,key和consumer线程数,以及不消费 ...

  5. Android 使用WebView控件展示SVG图

    1.添加布局界面代码: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xm ...

  6. catkin详细解释

    http://answers.ros.org/question/58498/what-is-the-purpose-of-catkin_depends/

  7. IIS7.0添加IP地址和域名限制

    IIS7.0默认安装是没有“IP地址和域名限制”功能的,需要我们自己选择安装 1.windows系统的添加方式 控制面板--程序与功能--启用或关闭windows功能--internat inform ...

  8. 原生js编写设为首页兼容ie、火狐和谷歌

    // JavaScript Document // 加入收藏 <a onclick="AddFavorite(window.location,document.title)" ...

  9. unused import statement android studio 解决方法

    解决方法:“file”-->“invalidate caches/restart” 解决 感谢大神的解答

  10. HDU 2555 陷阱(模拟,结构体数组)

    这道题目意思很明白,有不确定的数据沙包和陷阱,还要排序···那就必须要用结构体+数组 /* 在地面上有N 个大小不等的长方形陷阱,每个陷阱的周长各不相同,每个参赛者都有一个沙包,闭上眼睛把它扔向地面, ...