站長資訊網(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號
        主站蜘蛛池模板: 精品少妇一区二区三区在线| 国产在线91精品入口| 国产精品久久成人影院| 精品国产亚洲一区二区在线观看| 精品国偷自产在线| 麻豆精品三级全部视频| 精品国产_亚洲人成在线高清| 亚洲乱码精品久久久久..| 国产成人AV无码精品| 99re6在线精品免费观看| 人人妻人人澡人人爽欧美精品 | 99久久精品九九亚洲精品| 国产精品无码无卡在线播放 | 青青草国产精品久久久久| 久久精品国产亚洲精品2020 | 久久久久九九精品影院| 人精品影院| 四虎国产精品永久地址51| WWW国产精品内射老师| 久久久久久亚洲Av无码精品专口| 亚洲精品高清一二区久久| 久久丝袜精品中文字幕| 精品国产热久久久福利| 国产精品无码素人福利| 国产精品成人69XXX免费视频| 66精品综合久久久久久久| 一区二区三区精品| 欧美日韩精品在线| 久久精品国产亚洲麻豆| 精品久久久久久亚洲| 久久国产乱子精品免费女| 国产精品视频一区二区三区 | 久久99精品国产麻豆| 香港aa三级久久三级老师2021国产三级精品三级在 | 精品福利一区二区三区| 99riav国产精品| 91精品国产自产在线老师啪| 真实国产乱子伦精品免费| 国产VA免费精品高清在线| 国产原创精品 正在播放| 鲸鱼传媒绿头鱼实验室之炮机测评日韩精品一级毛 |