發(fā)布時間:2020-09-04
欄目:其他
2.2 遍歷樹
Start with子句:
首先必須確定startpoint更默契了,通過start with子句醒悟,后面加條件管理,這個條件是任何合法的條件表達式解決方案。
Start with確定將哪行作為root組成部分,如果沒有start with,則每行都當作root深刻認識,然后查找其后代業務指導,這不是一個真實的查詢成就。Start with后面可以使用子查詢激發創作,如果有where條件非常激烈,則會截斷層次中的相關(guān)滿足條件的節(jié)點競爭力所在,但是不影響整個層次結(jié)構(gòu)☆I域?梢詭Ф鄠€條件溝通機製。
對于s_emp,從root title=president 開始,語句如下:
select level,id,manager_id,last_name,title from s_emp
start with manager_id is null
connect by prior id=manager_id;
這個語句與下面的語句等價註入新的動力,將start with 后面的條件換成子查詢領先水平。
select level,id,manager_id,last_name,title from s_emp
start with title=(select title from s_emp where manager_id is null)
connect by prior id=manager_id;
注意:start with 和connect by prior不是ANSI標準sql。
無限層次樹形筆記本Connect by子句:
Connect by與prior 確定一個層次查詢的條件和遍歷的方向(prior 確定)雙重提升。
Connect by prior column_1=column_2;(其中prior表示前一個節(jié)點的意思戰略布局,可以在connect by 等號的前后,列之前表現明顯更佳,也可以放到select中的列之前)狀態。
Connect by也可以帶多個條件,比如 connect by prior id=manager_id and id>10;
方向:
1. 自頂向下遍歷:就是先由根節(jié)點穩定發展,然后遍歷子節(jié)點基石之一。column_1表示父key,column_2表示子key。即這種情況下:connect by prior 父key=子key表示自頂向下增持能力,等同于connect by 子key=prior 父key.
例如:
select level,id,manager_id,last_name, title from s_emp
start with manager_id=2
connect by id=prior manager_id;--自下而上遍歷
2. 自底向上遍歷:就是先由最底層的子節(jié)點共同努力,遍歷一直找到根節(jié)點。與上面的相反追求卓越。
無限層次樹形筆記本Connect by 之后不能有子查詢逐漸完善,但是可以加其他條件,比如加上and id !=2等。這句話則會截斷樹枝合理需求,如果id=2 的這個節(jié)點下面有很多子孫后代是目前主流,則全部截斷不顯示。比如下面的句子:
無限層次樹形筆記本 select level,id,manager_id,last_name,title from s_emp
start with title=(select title from s_emp where manager_id is null)
connect by prior id=manager_id and id!=2;
無限層次樹形筆記本不來不加上id!=2高質量,共有25 條記錄充分發揮,現(xiàn)在加上這個條件只有9 條記錄了,因為id=2 的后代包括自己共有16條記錄共創美好,全部被截斷推動並實現。
文章地址:http://61py.com/article/other/dyfromsstdnmzgviewbnbhjoin.html