Oracle :
  start with… connect by 的用法。语法:select * from table [where 条件1] connect by[条件2] start with[条件3]。
  connect by 和 start with的位置并无先后顺序。

select * from sys_organ_info where organ_id not in(4,6) start with organ_id = 3 connect by organ_id = prior organ_pid

  pid为父类。prior英文意思是在前的,居先的。所以,prior放在哪一边的话,表示哪一边为父类。故,这句sql是从树自下而上搜索。如果connect by的条件为 prior organ_id = organ_pid的话,可以理解成:之前那条数据的organ_id是当前这条数据的organ_pid, 就是从树自上而下钻取搜索,即:查询出organ_id的所有子类、孙类、重孙类等。
PG:

WITH RECURSIVE rcs as (
SELECT a.* FROM share_dev_type a
WHERE p_id = 1
UNION ALL
SELECT b.* FROM share_dev_type b, rcs
WHERE b.p_id = rcs.id
)
SELECT * FROM rcs

  用递归的方式,把一个表分成两份a和b,  查p_id = 1 的所有数据,此句表示 a 中的p_id=1,递归的条件即是 b的p_id即是a的id。 故,查询的是p_id = 1 的子孙数据。结果如图:

如果查父类:

    WITH RECURSIVE rcs as (
SELECT a.* FROM share_dev_type a
WHERE id = 126
UNION ALL
SELECT b.* FROM share_dev_type b, rcs
WHERE b.id = rcs.p_id
)
SELECT * FROM rcs

此句表示 a 中的id = 126,递归的条件即是 b的id即是a的p_id。 故,查询的是id = 126 的 父类数据。结果:

关系型数据库的树形结构查询(Oracle、Postgres)的更多相关文章

  1. 使用Oracle数据库实现树形结构表的子-父级迭代(递归)查询和删除,通过级联菜单简单举例

    前言: 我们在开发中,常常遇到单表的子-父id级联的表结构,在树形的深度不确定的情况下,一次查询出某个树形结构下的所有具有子-父级关系的数据变得十分困难. 这时,我们使用oracle提供的CONNEC ...

  2. 使用postgre数据库实现树形结构表的子-父级迭代查询,通过级联菜单简单举例

    前言:开发常用的关系型数据库MySQL,mssql,postgre,Oracle,简单的增删改查的SQL语句都与标准SQL兼容,这个不用讲,那么对于迭代查询(不严格的叫法:递归查询)每种数据库都不一样 ...

  3. 使用Oracle数据库实现树形结构表的子-父级递归查询和删除,通过级联菜单简单举例

    前言: 我们在开发中,常常遇到单表的子-父id级联的表结构,在树形的深度不确定的情况下,一次查询出某个树形结构下的所有具有子-父级关系的数据变得十分困难. 这时,我们使用oracle提供的CONNEC ...

  4. MySql/Oracle树形结构查询

    Oracle树形结构递归查询 在Oracle中,对于树形查询可以使用start with ... connect by select * from treeTable start with id='1 ...

  5. Oracle树形结构查询(递归)

    引用:https://blog.csdn.net/u012615705/article/details/78321022  文章转自上述地址,内部有稍许改动,如有需要请查看原文. oracle树状结构 ...

  6. Delphi中accesss实现树形结构查询系统(一次性生成比较方便)

    主要是要读取数据库的信息,而delphi界面是一个树形结构. 例如有一个Ascess数据库:示例.MDB,内有一张表:“国家”,表的内容如下: 编号        名称  01             ...

  7. Oracle恢复删除数据 && connect by 树形结构查询

    1.一个表中根据以父子级别关系查询显示出来(如图) select t.* from department t CONNECT BY PRIOR t.depid=t.supdepid ; --这样也可以 ...

  8. Oracle树形结构查询之prior的理解

    --1 建表 create table 宇宙( 行星等级 number ,行星名称 varchar2(50) ,上级行星等级 number); --2 数据准备 insert into 宇宙 (行星等 ...

  9. MySQL递归查询所有子节点,树形结构查询

    --表结构 CREATE TABLE `address` ( `id` int(11) NOT NULL AUTO_INCREMENT, `code_value` varchar(32) DEFAUL ...

随机推荐

  1. datatables初始化用法

    var recordTable = $('#record_table').DataTable({ "fnInitComplete": function () { //表格初始化完成 ...

  2. JS 百度地图 换地图主题颜色(API自带)

    JS 百度地图 换地图主题颜色(API自带) <script type="text/javascript" src="http://api.map.baidu.co ...

  3. 1.Java集合-HashMap实现原理及源码分析

    哈希表(Hash  Table)也叫散列表,是一种非常重要的数据结构,应用场景及其丰富,许多缓存技术(比如memcached)的核心其实就是在内存中维护一张大的哈希表,而HashMap的实现原理也常常 ...

  4. asp.net mvc 防止跨站攻击

    View @using (Html.BeginForm("Contact","Home",FormMethod.Post)) { @Html.AntiForge ...

  5. 如何解决Win10不能新建项目的问题?

    在Win10系统中,我们有时候会遇到右键菜单中没有新建项的情况,这时我们就无法进行文件的新建,非常耽误我们使用电脑.下面雨后清风就来分享一下Win10系统右键菜单没有新建项的解决方法. Win10系统 ...

  6. idou老师教你学Istio 24:如何在Istio使用Prometheus进行监控

    使用Prometheus进行监控是Istio提供的监控能力之一.Istio提供丰富的监控能力,为网格中的服务收集遥测数据.Mixer是负责提供策略控制和遥测收集的Istio组件. Istio通过Mix ...

  7. mongodb模式模型设计及编码-Mongoose

    走到这一步,我们的网站还不能称为动态的网站,因为所要的数据都是伪造的,所以现在要对数据库的模型进行设计   Mongoose 我们用到的工具模块是Mongoose,他能对Mongodb进行建模的这样一 ...

  8. string的 insert

    // inserting into a string #include <iostream> #include <string> int main () { std::stri ...

  9. mysql修改表字段顺序

    修改字段排列位置 ALTER TABLE 表名 MODIFY 字段名1 数据类型 FIRST|AFTER 字段名2 参数说明 FIRST,可选参数 将字段1,修改为表的第一个字段. AFTER 字段名 ...

  10. Pycharm----显示tab制表符

    设置前: 设置后: 操作方法: