站長資訊網(wǎng)
        最全最豐富的資訊網(wǎng)站

        oracle怎樣遞歸查詢子節(jié)點(diǎn)

        在oracle中,可以利用select語句遞歸查詢子節(jié)點(diǎn),該語句的作用就是對表數(shù)據(jù)進(jìn)行簡單的查詢,語法為“SELECT * FROM 表名 START WITH 條件1 CONNECT BY PRIOR 條件2 WHERE 條件3”。

        oracle怎樣遞歸查詢子節(jié)點(diǎn)

        本教程操作環(huán)境:Windows10系統(tǒng)、Oracle 11g版、Dell G3電腦。

        oracle怎樣遞歸查詢子節(jié)點(diǎn)

        語法結(jié)構(gòu)

        SELECT ... FROM    + 表名  START WITH + 條件1 CONNECT BY PRIOR + 條件2  WHERE  + 條件3

        條件1:是根節(jié)點(diǎn)的限定語句,當(dāng)然可以放寬限定條件,以取得多個(gè)根節(jié)點(diǎn),也就是多棵樹;在連接關(guān)系中,除了可以使用列明外,還允許使用列表達(dá)式。START WITH 子句為可選項(xiàng),用來標(biāo)識哪個(gè)節(jié)點(diǎn)作為查找樹形結(jié)構(gòu)的根節(jié)點(diǎn)。若該子句省略,則表示所有滿足查詢條件的行作為根節(jié)點(diǎn)。

        條件2:是連接條件,其中用PRIOR表示上一條記錄,例如CONNECT BY PRIOR STUDENT_ID = GRADE_ID,意思就是上一條記錄的STUDENT_ID是本條記錄的GRADE_ID,即本記錄的父親是上一條記錄。CONNECT BY子句說明每行數(shù)據(jù)將是按照層次順序檢索,并規(guī)定將表中的數(shù)據(jù)連入樹形結(jié)構(gòu)的關(guān)系中。PRIOR運(yùn)算符必須放置在連接關(guān)系的2列中某一個(gè)的前面。對于節(jié)點(diǎn)間的父子關(guān)系,PRIOR運(yùn)算符在一側(cè)表示父節(jié)點(diǎn),在另一側(cè)表示子節(jié)點(diǎn),從而確定查找樹結(jié)構(gòu)的順序是自頂向下,還是自底向上。

        條件3:是過濾條件,用于對返回的記錄進(jìn)行過濾。

        注意:

        1,CONNECT BY PRIOR是結(jié)構(gòu)化查詢中用到的;

        2,START WITH… CONNECT BY PRIOR…的作用,簡單來說,就是將一個(gè)樹狀結(jié)構(gòu)存儲(chǔ)在一張表里。

        通過子節(jié)點(diǎn)向根節(jié)點(diǎn)追朔.

        select * from persons.dept start with deptid=76 connect by prior paredeptid=deptid

        通過根節(jié)點(diǎn)遍歷子節(jié)點(diǎn)(不包含根節(jié)點(diǎn)).

        select * from persons.dept start with paredeptid=0 connect by prior deptid=paredeptid

        通過根節(jié)點(diǎn)遍歷子節(jié)點(diǎn)(包含根節(jié)點(diǎn)).

        select * from persons.dept start with deptid=0 connect by prior deptid=paredeptid

        可通過level 關(guān)鍵字查詢所在層次.

        select a.*,level from persons.dept a start with paredeptid=0 connect by prior deptid=paredeptid

        備注:

        start with …connect by 的用法, start with 后面所跟的就是就是遞歸的種子。

        遞歸的種子也就是遞歸開始的地方 connect by 后面的"prior" 如果缺?。簞t只能查詢到符合條件的起始行,并不進(jìn)行遞歸查詢;

        connect by prior 后面所放的字段是有關(guān)系的,它指明了查詢的方向。

        練習(xí): 通過子節(jié)點(diǎn)獲得頂節(jié)點(diǎn)

        select FIRST_VALUE(deptid) OVER (ORDER BY LEVEL DESC ROWS UNBOUNDED PRECEDING) AS firstdeptid from persons.dept start with deptid=76 connect by prior paredeptid=deptid

        表結(jié)構(gòu)

        DEPTID PAREDEPTID NAME NUMBER NUMBER CHAR (40 Byte)

        部門id 父部門id(所屬部門id) 部門名稱

        推薦教程:《Oracle視頻教程》

        贊(0)
        分享到: 更多 (0)
        網(wǎng)站地圖   滬ICP備18035694號-2    滬公網(wǎng)安備31011702889846號
        主站蜘蛛池模板: 国产欧美日本亚洲精品一5| 男女男精品视频网站在线观看| 成人午夜精品久久久久久久小说| 亚洲精品无码永久在线观看 | 精品97国产免费人成视频| 国产成人精品优优av| 亚洲精品无码专区在线播放 | 国产精品自在线拍国产电影 | 久久这里只精品国产99热| 无码精品黑人一区二区三区| 久久精品国产亚洲精品| 91精品日韩人妻无码久久不卡| 国产精品国产三级国产普通话| 亚洲国产精品一区二区久久hs | 国产精品成人小电影在线观看| 国产精品你懂的| 国产综合精品女在线观看| 在线精品无码字幕无码AV| 精品无码久久久久久久久久| 99久久国产热无码精品免费久久久久| 99re国产精品视频首页| 精品无码人妻一区二区三区品 | 亚洲国模精品一区| 久久精品国产黑森林| 国产精品一区二区三区99| 99久久精品免费国产大片| 欧美精品国产精品| 久久精品国产影库免费看 | 国产vA免费精品高清在线观看| 亚洲国产精品自在在线观看| 亚洲精品自产拍在线观看动漫| 国产亚洲一区二区精品| 成人国内精品久久久久影院| 国产精品久久自在自线观看| 国产精品视频一区二区三区| 欧美日韩精品乱国产538| 国产精品影音先锋| 久久综合九色综合精品| 四虎成人精品免费影院| 国产精品 码ls字幕影视| 国产精品亚洲高清一区二区 |