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;