Oracle 層級關係的記錄根據當前記錄查詢記錄的所有上級記錄或所有下級記錄

oracle 中的 start with ... connect by prior 遞歸查詢基本語法是:

select 1 from 表格 start with ... connect by prior id = parentId 

connect by:connect by是必須的,start with有些情況是可以省略的

prior:prior關鍵字可以放在等號的前面,也可以放在等號的後面,表示的意義是不一樣的,比如 prior id = parentId ,就表示parentId 就是這條記錄的根節點了

id:表示當前的根節點

parentId :以當前節點爲根節點的所有上級節點

例如:

pk_marbasclass :表示當前的根節點

pk_parent  :以當前節點爲根節點的所有上級節點

查詢 pk_marbasclass ='1001A110000000000S8Y'的所有上級記錄的 pk_marbasclass

select t.pk_marbasclass  from bd_marbasclass t start with t.pk_marbasclass ='1001A110000000000S8Y'  connect by prior  t.pk_marbasclass =t.pk_parent  ;

當 pk_parent :表示當前的根節點

pk_marbasclass:以當前節點爲根節點的所有下級節點

查詢 pk_marbasclass ='1001A110000000000S8Y'的所有下級記錄的 pk_marbasclass

select t.pk_marbasclass  from bd_marbasclass t start with t.pk_marbasclass ='1001A110000000000S8Y'  connect by prior  t.pk_parent =  t.pk_marbasclass;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章