****欧欧美毛片4,国产午夜精品视频,97视频在线观看免费视频,久久七国产精品

數據恢復咨詢熱線:400-666-3702??

歡迎訪問南京兆柏數據恢復公司,專業數據恢復15年

兆柏數據恢復公司

?常見問題

?當前位置: 主頁 > 常見問題

Oracle數據庫遞歸查詢

瀏覽量: 次 發布日期:2023-10-15 20:13:19

Oracle數據庫遞歸查詢

上海數據恢復

最近在做一個樹狀編碼管理系統,其中用到了oracle的樹狀遞歸查詢(關鍵字:SELECT ... WHERE... START WITH ... CONNECT BY PRIOR) 以后開發樹狀菜單、樹狀評論、樹狀文件結構,只要和樹扯得上關系的都可以應用,前提是你用的是oracle數據庫

以上數據PID為0的表示根節點,根節點可以有多個,根節點的PID最好不要用NULL,此時會引起全表掃描。 按照層級關系展示如下:

查詢ID為1的節點的兒子

常州數據恢復

查詢ID為6的節點的所有親兄弟節點

從ID為1的節點開始,查詢所有屬于它的子節點,包括兒子,兒子的兒子,兒子的兒子的兒子,兒子的兒子的兒子....無限個兒子

當然,你也可以加WHERE條件,不要名稱中含有房東的兒子節點

甚至可以指定多個根節點

這個和上面查找某節點所有子節點(自頂向下的樹狀)的唯一區別就是PID和ID的位置交換了,上面能用的WHERE和IN這里也能用,不再贅述

不管節點是屬于哪個根節點的,只要在同一層級都可以查詢出來,和查詢某節點所有兄弟節點的不同之處在于,前者是查詢親兄弟,后者是所有兄弟,不管是親兄弟,堂兄弟,表兄弟 用臨時表保存層級信息(LEAF),然后從臨時表中查詢傳入ID的層級,最后查詢所有在同一層級的節點

可以看到,上面的所有節點都是2層級,本文最開始的層級關系展示圖可以用下面的SQL查詢出來,LPAD函數可適當調整

此查詢在對每個節點進行分類和其他表聯查的時候比較有用

自頂向下路徑查詢

自下向上路徑查詢 注意和自頂向下的在效率上的區別,引用別人的一句話

在這里我又不得不放個牢騷了。oracle只提供了一個sys_connect_by_path函數,卻忘了字符串的連接的順序。在上面的例子中,第一個sql是從根節點開始遍歷,而第二個sql是直接找到當前節點,從效率上來說已經是千差萬別,更關鍵的是第一個sql只能選擇一個節點,而第二個sql卻是遍歷出了一顆樹來。再次ps一下。https://www.cnblogs.com/linjiqin/p/3152674.html

查詢樹狀始終顯示根節點

動態查詢是否是葉子節點,是葉子節點表示該節點沒有兒子了,否則有兒子,ORACLE自帶的CONNECT_BY_ISLEAF能動態顯示是否葉子節點,1是0否

相關推薦