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.pswp.cn/news/533844.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/533844.shtml
英文地址,請注明出處:http://en.pswp.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;且推理服務一般速度也較慢(會達…