mysql 父子关系 找所有上级_oracle和postgresql 递归查询父子关系记录语法区别

  • Post author:
  • Post category:mysql


oracle:

一、数据

db数据字段如下:

task_id             task_name         t.parent_task_id       ***

***                     ***                          ***                               ***

000001            t1                         ***                                 ***

000002            t11                       000001                        ***

000005            t12                       000001                         ***

000003            t111                    000002                         ***

000004            t1111                  000003                         ***

000006            t121                    000005                         ***

000007            t1211                  000006                         ***

***                     ***                       ***                                 ***

二、格式

Select * from …. Where [结果过滤条件语句]

Start with  [and起始条件过滤语句]

Connect by prior [and中间记录过滤条件语句]

三、查找所有下级

select * from tablename start with id=1 connect by prior id=pid

注意:此sql能查找id=1的数据的所有下级,写sql语句时要注意,因为是从id开始查找下级,所以connect by prior 子句的条件是         id=pid

四、查找所有上级

select * from tablename start with id=5 connect by prior pid=id

因为是从id开始查找上级,所以connect by prior 子句的条件是pid=d

select t.task_id ,t.task_name ,t.parent_task_id

from t_task t

start with task_id=”

connect by prior task_id = parent_task_id;

五、显示结果

结果显示:

task_id                 task_name          t.parent_task_id

000001                t1

000002                t11                       000001

000003                t111                     000002

000004                t1111                    000003

000005                t12                       000001

000006                t121                     000005

000007                t1211                   000006

postgresql:

查询父节点下所有的子节点

WITH recursive fileinfo

(pk_fi_id,

f_fi_parentid)

AS

(

SELECT

pk_fi_id ,

f_fi_parentid

FROM

t_fileinfo

WHERE

pk_fi_id = ‘92719f78-22d6-4db1-a484-dff34de76890’

UNION ALL

SELECT

mm.pk_fi_id ,

mm.f_fi_parentid

FROM

t_fileinfo AS mm

INNER JOIN fileinfo AS child ON mm.f_fi_parentid = child.pk_fi_id

)

SELECT

*

FROM fileinfo

oracle处理节点之间的父子关系

通常当与树的结构之间的关系处理,这是一个很复杂的事情,我们可以通过程序代码去逐层遍历父或子节点,这样做的缺点是很明显,效率不高,操作复杂性是比较大的.而当我们使用Oracle当数据库,我们可以有一个简 …

oracle 父子关系

语句递归查找父子关系语句 表结构及数据 1.通过根节点遍历子节点 select t.*,LEVEL from Test2 t START WITH t.parentid=0 CONNECT BY PR …

MySQL,Oracle,PostgreSQL 数据库web维护客户端管理工具

TreeDMS数据库管理系统使用JAVA开发,采用稳定通用的springMVC +JDBC架构,实现基于WEB方式对 MySQL,Oracle,PostgreSQL 等数据库进行维护管理操作. 功能包 …

MySQL,Oracle,PostgreSQL通过web方式管理维护, 提高开发及运维效率

在开发及项目运维中,对数据库的操作大家目前都是使用客户端工具进行操作,例如MySQL的客户端工具navicat,Oracle的客户端工具 PL/SQL Developer, MSSQL的客户端工具查询 …

PostgreSQL=>递归查询

PostgreSQL=>递归查询 转载请注明源地址:http://www.cnblogs.com/funnyzpc/p/8232073.html 距上次博客更新刚好两周,这两周发生了很多,比如: …

MySQL,Oracle,PostgreSQL,mongoDB,Hive, SAP HANA 数据库web维护客户端管理工具

TreeDMS数据库管理系统使用JAVA开发,采用稳定通用的springMVC +JDBC架构,实现基于WEB方式对 MySQL,Oracle,PostgreSQL,mongoDB ,Hive, SA …

MySQL,Oracle,PostgreSQL,mongoDB 通过web方式管理维护, 提高开发及运维效率

在开发及项目运维中,对数据库的操作大家目前都是使用客户端工具进行操作,例如MySQL的客户端工具navicat,Oracle的客户端工具 PL/SQL Developer, MSSQL的客户端工具查询 …

PostgreSQL 递归查询 (转)

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

Oracle中PL/SQL简介、基本语法以及数据类型

Oracle中PL/SQL简介.基本语法以及数据类型 一.PL/SQL简介. Oracle PL/SQL语言(Procedural Language/SQL)是结合了结构化查询和Oracle自身过程控 …

随机推荐

对 Python 语法不够了解导致的 bug

对 Python 语法不够了解导致的 bug. `in` ’20’ in ‘11264,6144,4096,3072,2048,1024,300,30’ Out[7]: True a_list = ‘ …

base64

OC: 数组、集合、字典

数组.字典.集合 参考1   参考2  参考3  参考4  参考5 NSArray * nn  = @[@”元素1″,@”元素2″,@”元素3&quo …

带你了解世界最先进的手势识别技术 — 微软,凌感,Leap...

转载 今天为大家解释一下现有的几种主要的手势识别技术,为你揭开手势识别技术的神秘面纱. 概述 谈起手势识别技术,由简单粗略的到复杂精细的,大致可以分为三个等级:二维手型识别.二维手势识别.三维手势识别 …

idea编译工程时出现Error:java: 无效的目标发行版: 1.8

见图,从上述可以看出工程用的jdk1.7,而idea编译时采用的是1.8版本(应该idea新版本内置的jre是1.8吧,默认编译采用1.8) 修改:如下图    http://blog.csdn.ne …

推荐使用Tiny Framework web开发UI组件

TINY FRAMEWORK 基于组件化的J2EE开发框架,from:http://www.tinygroup.org/   名字 Tiny名称的来历 取名Tiny是取其微不足道,微小之意. Tiny …

分享一下自己写的一个vscode-leetcode答题插件

0. 前言 春节这几天每天吃吃喝喝睡睡玩玩,突然发现明天就要上班了,吓得我虎躯一震. 春节结束之后,学生党们陆续开学,相信有许多同学马上就要在春季招聘中拼杀一番.想要收获心意的offer,当然免不了对 …

【59】Quartz+Spring框架详解

什么是Quartz Quartz是一个作业调度系统(a job scheduling system),Quartz不但可以集成到其他的软件系统中,而且也可以独立运行的:在本文中”job sc …

你不知道的JavaScript–Item14 使用prototype的几点注意事项

1.在prototype上保存方法 不使用prototype进行JavaScript的编码是完全可行的,例如: function User(name, passwordHash) { this.nam …

Ajax验证用户名是否被注册

Ajax验证用户名是否被注册 var xmlHttp; function createXMLHttpRequest(){ // 创建XMLHttp请求对象 if(window.ActiveXObjec …



版权声明:本文为weixin_42386033原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。