oracle树状排序,Oracle树状结构查询

oracle用表的形式组织数据,某些数据还呈现树状结构,提供了对这些数据的组织、查询等功能。在扫描树结构表时,要依次访问树中的每一个节点,并且每个节点只能访问一次,其步骤如下:

1:从根节点开始

2:访问该节点

3:判断该节点有无被访问的子节点,若有,则转向它最左侧未被访问的子节点,并执行第二步,否则执行第四步

4:若该节点为根节点,则访问完毕,否则执行第五步

5:返回到该节点的父节点,并执行第三步骤

总之,整个扫描过程是一个中序遍历树的过程

1:树结构描述

数据之间的层次关系(父子关系)通过表中列与列之间的关系来描述

select

connect by {prior col1 = col2 || col1 = prior col2 }

[start with ]

connect by子句说明数据按照层次顺序检索,并将数据连入树形结构关系中

prior运算符必须放在连接关系的两列中某一列的前面,从而确定查找顺序是自上而下还是自下而上,连接关系中,可使用列名、列表达式

start with 子句为可选项,用来标识查找结构的根节点。若省略,则表示所有满足条件的行作为根节点

2:关于prior

prior和父列子列的相对位置,决定着查询方向。放在子节点前面是表示由父节点向子节点方向检索,放在父节点前面时表示从子节点向父节点方向检索,可以将prior想象成一个箭头,放在谁的前面,就向那个方向检索。

3:定义起始查找节点

不但可以从根节点开始,而且可以定义任何节点为起始节点

start with可指定一个或多个根节点

4:使用level

节点所处位置不同,每行记录都有一个层号,层号有节点与根节点的距离决定。无论从哪个节点开始,该其实根节点的层号始终为1,依次类推

伪列level显示每行数据的有关层次,返回属性结构中当前节点的层次,可用来控制对树形结构进行遍历的深度,伪列level为数值型,可与lpad、rpad等结合进行数据展示

5:节点和分支的剪裁

where子句限定单个节点,而不影响其子节点(自上而下)或父节点(自下而上)

connect by 子句限定整个以当前节点为起始节点的整个分支

两者可联合使用

6:排序显示

order by子句,改变查询结果的显示顺序

在10g又增加了几个新的特性,增强了connect by子句:

从9i开始,可通过sys_connect_by_path函数实现从父节点到当前行内容以”path“或者层次元素列表的形式显示出来。sys_connect_by_path(child,'/')

connect_by_root,用在列名之前返回当前层的根节点(最高级节点的内容)

connect_by_isleaf,来判断当前行是不是叶子,如果是叶子就会在伪列中显示1

connect_by_iscycle,10g中增加对树中环状循环的处理;一旦数据中出现了循环记录(如:两个节点互为对方父节点),在10g以 前版本的数据库中会错误提示”ora-01436。。“,只要指定nocycle可避免报错,且通过connect_by_iscycle属性就知道哪些 节点产生了循环,如果出现循环,connect_by_iscycle伪列显示为1,否则显示为0。

select connect_by_iscycle, dirindex, fatherindex, RPAD(' ', 2*(LEVEL-1)) || dirname

from t_tonedirlib

start with fatherindex = 666

connect by NOCYCLE fatherindex = prior dirindex

特殊用法:

得到1到10的一个序列

select rownum from dual

connect by rownum<=10

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/533844.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python numpy读取数据_大神教你python 读取文件并把矩阵转成numpy的两种方法

导读 今天小编就为大家分享一篇python 读取文件并把矩阵转成numpy的两种方法&#xff0c;具有很好的参考价值&#xff0c;希望对大家有所帮助。一起跟随小编过来看看吧 在当前目录下&#xff1a; 方法1&#xff1a; file open(‘filename) a file.read() b a.split(‘\n)#使用…

datagrid wpf 获取选中_c# WPF DataGrid 获取选中单元格信息

private void Button_Click(objectsender, RoutedEventArgs e){DataGridCell cell dg.GetCell(1, 2);TextBlock tb cell.Content asTextBlock;Console.WriteLine(tb.Text);}public static classDataGridExtension{/// ///获取DataGrid控件单元格/// /// DataGrid控件/// 单元格…

redis哨兵高可用-源码篇

前段时间写过两篇redis哨兵的文章,一篇是redis哨兵模式的搭建。另外一篇是redis哨兵主从切换的原理,。 当时写的原理篇,是手动模拟主节点故障,然后查看主从切换的日志推算哨兵主从切换的流程。但是感觉这样搞出来的流程太粗&#xff0c;忽略了很多细节&#xff0c;真正要搞明白…

python获取网页数据对电脑性能_【Python】网页数据爬取实战

由于网页结构跟之前有变化&#xff0c;还不是很熟悉。代码待完善&#xff0c;问题记录&#xff1a;腾讯新闻二级网页内容爬取有问题。链家网站头文件没有用到。爬取一条腾讯视频的header内容&#xff0c;存入txt。要求&#xff1a;包含网页链接包含title包含所有headers信息imp…

python集合去重_python集合去重

[python中对list去重的多种方法 怎么快速的对列表进行去重呢&#xff0c;去重之后原来的顺序会不会改变呢&#xff1f; 1.以下的几种情况结果是一样的&#xff0c;去重之后顺序会改变: i [1,2,3,3,4,2,3,4,5,6,1] news_i [] for id in i: if id not in news_i: news_i.append(…

linux进程pid分配规则,Linux进程pid分配法【转】

一. 概述Android系统创建进程&#xff0c;最终的实现还是调用linux fork方法&#xff0c;对于linux系统每个进程都有唯一的 进程ID(值大于0)&#xff0c;也有pid上限&#xff0c;默认为32768。 pid可重复利用&#xff0c;当进程被杀后会回收该pid&#xff0c;以供后续的进程pid…

sqlserver date类型和字符串比较_基于SQL Server数据库搭建主从复制实现读写分离实战演练...

一、课程介绍读写分离(主从同步)从字面意思就可以理解&#xff0c;就是把对数据库的读操作和写操作分离开。读写分离在网站发展初期可以一定程度上缓解读写并发时产生锁的问题&#xff0c;将读写压力分担到多台服务器上。读写分离的基本原理是让主数据库处理事务性增、改、删操…

linux非标准头文件,Linux学习:unix的标准化的实现(Linux中各种限制-数据类型-各种标准化头文件介绍)...

作为Linux的前身&#xff0c;unix标准化是十分重要的。我在这里挑几个重要的点说明。1&#xff1a;Linux中各种限制。Linux中限制有编译时限制和运行时限制&#xff0c;另外有一些限制是由于我们的实现不同而不同&#xff0c;因此我们需要调用对应的函数获取对应的值不同。(eg&…

python怎么导入大小字母_python遍历小写英文字母的方法

python遍历小写英文字母的方法在c、c等语言中&#xff0c;可以用字符1的for循环来遍历小写的26个英文字母&#xff0c;但是由于python语言的特殊性&#xff0c;通过a 1这种代码并不能成功遍历&#xff0c;以下是在python中遍历英文字母的简洁代码&#xff1a;import stringfor…

51单片机怎么显示当前时间_(进阶篇)51单片机之按键控制蜂鸣器、数码管、按键值移位显示...

一、实操演示- 按键控制蜂鸣器1、图文详细独立按键硬件电路蜂鸣器硬件电路2、连接方式&#xff1a;J20的第3号引脚连接到J7引脚&#xff0c;即P15连接J7。J29的第7、8号引脚连接到JP1的第1、2号引脚&#xff0c;即P31连接k1&#xff0c;P30连接k2。下载程序后&#xff0c;观察现…

linux怎么运行g77,Linux安装g77编译器的技巧

在Ubuntu10.10系统中&#xff0c;g77已经被gfortran完全替代了&#xff0c;但并不能完全兼容过去的g77&#xff0c;这样就不能使用一些用977编译的程序了。所以我们只能自己再安装g77了。今天华军小编给大家展示的是Linux安装g77编译器的技巧&#xff0c;精心挑选的内容希望大家…

oracle 结果集已耗尽_java.sql.SQLException: 结果集已耗尽

编写了jsp谁能帮忙看下有什么问题编写了jsp 谁能帮忙看下 有什么问题技术交流ResultSet rsnull;String str"select publish_id,publish_name,publish_time,publish_text from comment_tb order by publish_time desc ";query.connect();rsquery.select(str);while(rs…

vs使用未初始化的内存怎么解决_遇到C语言内存错误怎么办?一定要找准这六个原因...

一、没有为指针分配内存定义了指针变量&#xff0c;但是没有为指针分配内存&#xff0c;即指针没有指向一块合法的内存。浅显的例子就不举了&#xff0c;这里举几个比较隐蔽的例子。1、结构体成员指针未初始化struct student { char *name; int score; }stu,*pstu; int main() …

linux服务器如何设置双网卡,linux服务器设置(双网卡共享上网)

一、网络拓补结构&#xff1a;服务器&#xff1a;两网卡的设置&#xff1a;eth0:202.96.168.100 掩码&#xff1a;255.255.255.0 网关&#xff1a;202.96.168.68 #与 Inte.Net 相联eth1:192.168.1.1掩码&#xff1a;255.255.255.0#与局域网相联客户机子网段&#xff1a;192.1…

pwn环境搭建_pwndbg、pwntools环境搭建(Unix系统)

目录[TOC]pwndbg环境搭建项目地址https://github.com/pwndbg/pwndbg搭建过程1、安装环境基础gitpythonpython-pip2、安装过程使用git命令克隆远程项目到本地。git clone https://github.com/pwndbg/pwndbg进入项目根目录并执行一键安装脚本cd pwndbg && ./setup.sh该脚…

cad求和插件_黑科技 | 无BIM建模下平面CAD自动生成门窗表

如果你接到的施工图既不是用天正出的&#xff0c;也不是用revit出的&#xff0c;还得统计门窗表&#xff0c;那么你需要读完这篇文章。为了能够让自己和所有底层同行们从这项无脑又烧脑的机械劳动中解脱&#xff0c;C君近期利用茶余饭后的时间开发了一个小插件&#xff0c;可以…

linux数据库实例开机启动,linux下数据库实例开机自启动设置

linux下数据库实例开机自启动设置 1、修改/oratab [rootorg54 ~]# vi/etc/oratab --把N改为Y&#xff0c;如下提示 # This file is used by ORACLEutilities. It is created by root.sh # and updated by the Database ConfigurationAssistant when creating # a datablinux下数…

panic 苹果aop_Go Web开发之Revel - 拦截器

一个拦截器是一个框架在调用action方法前或后调用的函数. 它允许一种AOP的形式, 它经常被用于做下面几种事情:Request loggingError handlingStats keeping在Revel里, 一个拦截器能接受两种形式:1. 函数拦截器: 一个函数满足没有访问特定的应用程序Controller被调用在应用程序中…

make找不到linux内核函数,linux内核make menuconfig出错

今天实验刚从服务器上迁移过来的维护的linux 9260的内核&#xff0c;使用make menuconfig时出错&#xff0c;报错为&#xff1a;yongtaoyongtao-desktop:~/public/linux_release/linux-2.6.24$ make menuconfigHOSTCC scripts/kconfig/conf.oHOSTCC scripts/kconfig/kxgettex…

tensorboard ckpt pb 模型的输出节点_算法工程化系列——模型固化

摘要基于tensorflow训练的模型一般被保存为ckpt形式的文件&#xff0c;随着当前深度学习模型网络越来越大&#xff0c;对应模型也会非常大。当对外提供服务的时候&#xff0c;如果采用ckpt的形式&#xff0c;服务进程被调起来非常困难&#xff0c;且推理服务一般速度也较慢(会达…