發(fā)布時(shí)間:2020-09-04
欄目:其他
2.2 遍歷樹
Start with子句:
首先必須確定startpoint,通過start with子句,后面加條件,這個(gè)條件是任何合法的條件表達(dá)式。
Start with確定將哪行作為root,如果沒有start with,則每行都當(dāng)作root,然后查找其后代,這不是一個(gè)真實(shí)的查詢。Start with后面可以使用子查詢,如果有where條件,則會(huì)截?cái)鄬哟沃械南嚓P(guān)滿足條件的節(jié)點(diǎn),但是不影響整個(gè)層次結(jié)構(gòu)。可以帶多個(gè)條件。
對(duì)于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;
這個(gè)語句與下面的語句等價(jià),將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標(biāo)準(zhǔn)sql。
無限層次樹形筆記本Connect by子句:
Connect by與prior 確定一個(gè)層次查詢的條件和遍歷的方向(prior 確定)。
Connect by prior column_1=column_2;(其中prior表示前一個(gè)節(jié)點(diǎn)的意思,可以在connect by 等號(hào)的前后,列之前,也可以放到select中的列之前)。
Connect by也可以帶多個(gè)條件,比如 connect by prior id=manager_id and id>10;
方向:
1. 自頂向下遍歷:就是先由根節(jié)點(diǎn),然后遍歷子節(jié)點(diǎn)。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é)點(diǎn),遍歷一直找到根節(jié)點(diǎn)。與上面的相反。
無限層次樹形筆記本Connect by 之后不能有子查詢,但是可以加其他條件,比如加上and id !=2等。這句話則會(huì)截?cái)鄻渲Γ绻鹖d=2 的這個(gè)節(jié)點(diǎn)下面有很多子孫后代,則全部截?cái)嗖伙@示。比如下面的句子:
無限層次樹形筆記本 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)在加上這個(gè)條件只有9 條記錄了,因?yàn)閕d=2 的后代包括自己共有16條記錄,全部被截?cái)唷?/p>
文章地址:http://www.brucezhang.com/article/other/dyfromsstdnmzgviewbnbhjoin.html

- 1通王CMS 2.0簡(jiǎn)介
- 2黑帽網(wǎng)站排名檢測(cè)
- 3MySQL中經(jīng)典的too many connection怎么破
- 4網(wǎng)易郵箱洪陸駕:反垃圾郵件需集合全球力量
- 5站群友鏈換鏈神器
- 6云勢(shì)軟件VirgoEDC助力安徽萬邦、迪時(shí)咨詢等公司臨床試驗(yàn)數(shù)據(jù)采集智能化
- 7Authorize 屬性通過聲明的方式保護(hù)控制器或其部分方法
- 8域名是稀有資源,好的域名,在一定時(shí)期內(nèi)會(huì)越來越升值
- 9解析常見的PHP緩存技術(shù)有哪些
- 10對(duì)ASP.NET程序員非常有用工具