Oracle查詢樹結構表

2021-08-11 13:58:05 字數 1086 閱讀 7861

11月最後一天,趕緊寫多一篇湊夠四篇

對於樹狀結構的表,即有記錄父節點或子節點的表,如果不知道到底有多少層級,oracle有自帶的函式可以處理查詢

語法

select a from b where c = 『d』

start with id = 『1』 connect by preid = prior id

prior代表的是父親的位置,如果是 connect by prior preid = id的話,證明preid是父節點的屬性,反之,則代表id是prior的屬性

解析:

select語句查出來的結果再前,id是標識碼,preid是父節點的id。

start with 是開始的節點,此處起始節點id為1

sys_connect_by_path (zddm, 『/』) as path,

這樣可以將每乙個節點的zddm列,用』/』連線成字串,然後存在path中。

效果如下:

層級不同,長度也不同

然後在用substr() 和 instr()來擷取操作字串。

實際操作,對於表:

這是實際的表結構,有樹狀的層次關係

如果需要查「農用地」下的所有節點,可以用sql

select * from t_sjzd

start with bsm = 『12953』

connect by sjzdbsm = prior bsm

結果如下

最開頭的節點就沒了

網上找到更詳細的查詢方法,包括查親兄弟、族兄弟、叔伯父等節點的方法:

Oracle 樹結構查詢

同事寫的樹結構查詢,記錄一下 表結構很簡單 就兩列 rangid number rangname varchar2 主要根據rangid數值來表示層級關係 select t1.rangid,t1.rangname,decode select count from test t2 where t2.r...

Oracle樹結構查詢

oracle樹結構查詢 start with connect by用法簡介 oracle是乙個關聯式資料庫管理系統,它用表的形式組織資料,在某些表中的資料還呈現出 樹型結構的聯絡。例如,我們現在討論雇員資訊表emp,其中含有雇員編號 empno 和 經理 mgr 兩例,通過這兩列反映出來的就是雇員之...

樹結構表查詢

我們經常會將乙個比較複雜的目錄樹儲存到乙個表中。或者將一些部門儲存到乙個表中,而這些部門互相有隸屬關係。這個時候你就會用到connect by prior start with。connect by 是結構化查詢中用到的,其基本語法是 select from tablename start with...