站長資訊網(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號
        主站蜘蛛池模板: | 中文字幕九七精品乱码 | 精品久久久久久亚洲精品| 99久久精品免费| 日韩精品乱码AV一区二区| 精品多毛少妇人妻AV免费久久 | 亚洲精品无码av天堂| 国产精品亚洲精品日韩已方| 国产精品一二三区| 少妇人妻偷人精品免费视频| 欧美人与性动交α欧美精品| 国产精品热久久毛片| 欧美精品国产一区二区| 国产麻豆精品久久一二三| 亚洲日韩精品射精日| 人妻少妇精品无码专区动漫| 精品国产AⅤ一区二区三区4区| 青青青国产精品国产精品久久久久 | 国产精品第13页| 国产精品污WWW在线观看| 日韩精品中文字幕无码一区| 亚洲国产午夜中文字幕精品黄网站| 国产精品女人呻吟在线观看| 国产91精品黄网在线观看| 亚洲精品视频在线| 欧美激情精品久久久久| 欧美日韩精品一区二区在线播放| 99热在线日韩精品免费| 1000部精品久久久久久久久| 国产网红无码精品视频| 国产女主播精品大秀系列| 丰满人妻熟妇乱又仑精品| 国产福利精品一区二区| 国产成人精品电影在线观看 | 亚洲精品无码久久久影院相关影片| 欧美精品三区| 亚州日韩精品专区久久久| 亚洲?V乱码久久精品蜜桃| 午夜在线视频91精品| 亚洲Av永久无码精品三区在线| 亚洲国产精品乱码一区二区|