黄色网页视频 I 影音先锋日日狠狠久久 I 秋霞午夜毛片 I 秋霞一二三区 I 国产成人片无码视频 I 国产 精品 自在自线 I av免费观看网站 I 日本精品久久久久中文字幕5 I 91看视频 I 看全色黄大色黄女片18 I 精品不卡一区 I 亚洲最新精品 I 欧美 激情 在线 I 人妻少妇精品久久 I 国产99视频精品免费专区 I 欧美影院 I 欧美精品在欧美一区二区少妇 I av大片网站 I 国产精品黄色片 I 888久久 I 狠狠干最新 I 看看黄色一级片 I 黄色精品久久 I 三级av在线 I 69色综合 I 国产日韩欧美91 I 亚洲精品偷拍 I 激情小说亚洲图片 I 久久国产视频精品 I 国产综合精品一区二区三区 I 色婷婷国产 I 最新成人av在线 I 国产私拍精品 I 日韩成人影音 I 日日夜夜天天综合

ORACLE 遞歸查詢(xún)

系統(tǒng) 2223 0

既然會(huì)看ORACLE遞歸查詢(xún)那么大家應(yīng)該是比較清楚遞歸是什么意思了,在這里我就不多加說(shuō)明了,只作簡(jiǎn)單介紹了。

言歸正傳所謂遞歸查詢(xún)那么數(shù)據(jù)表中數(shù)據(jù)的結(jié)構(gòu)應(yīng)該是符合遞歸查詢(xún)的基本條件,即表中有ID,PID(節(jié)點(diǎn)編號(hào)、父節(jié)點(diǎn)編號(hào))如果把數(shù)據(jù)以UI的方式展現(xiàn)出來(lái)應(yīng)該是一棵或多棵樹(shù)了。

那么我們要以其中一個(gè)節(jié)點(diǎn)去遞歸查詢(xún)出這個(gè)節(jié)點(diǎn)子節(jié)點(diǎn)或父節(jié)點(diǎn)的過(guò)程就是我們所要說(shuō)明的。

遞歸查詢(xún)語(yǔ)法:

?

select ... from tablename? where 條件4 start with 條件1? connect by 條件2?AND 條件3

?

如下面的表結(jié)構(gòu) http://www.cnblogs.com/wanghonghu/archive/2012/08/31/2665945.html

    
      CREATE
    
    
      TABLE
    
    
       SC_DISTRICT

(

  IID         
    
    
      NUMBER
    
    (
    
      10
    
    )                  
    
      NOT
    
    
      NULL
    
    
      ,

  PARENT_ID  
    
    
      NUMBER
    
    (
    
      10
    
    
      ),

  INAME       
    
    
      VARCHAR2
    
    (
    
      255
    
     BYTE)          
    
      NOT
    
    
      NULL,
    
    
      

 BZ      
      
        NUMBER
      
      (
      
        4
      
      )
      
);
ALTER TABLE SC_DISTRICT ADD ( CONSTRAINT SC_DISTRICT_PK PRIMARY KEY (IID)); ALTER TABLE SC_DISTRICT ADD ( CONSTRAINT SC_DISTRICT_R01 FOREIGN KEY (PARENT_ID) REFERENCES SC_DISTRICT (IID));
    
      INSERT
    
    
      INTO
    
     SC_DISTRICT(IID,INAME) 
    
      VALUES
    
    (
    
      1
    
    ,
    
      '
    
    
      四川省
    
    
      '
    
    
      );




    
    
      INSERT
    
    
      INTO
    
     SC_DISTRICT(IID,PARENT_ID,INAME,BZ) 
    
      VALUES
    
    (
    
      2
    
    ,
    
      1
    
    ,
    
      '
    
    
      巴中市
    
    
      ',0
    
    
      );


    
    
      INSERT
    
    
      INTO
    
     SC_DISTRICT(IID,PARENT_ID,INAME,BZ) 
    
      VALUES
    
    (
    
      3
    
    ,
    
      1
    
    ,
    
      '
    
    
      達(dá)州市
    
    
      ',0
    
    
      ); 




    
    
      INSERT
    
    
      INTO
    
     SC_DISTRICT(IID,PARENT_ID,INAME,BZ) 
    
      VALUES
    
    (
    
      4
    
    ,
    
      2
    
    ,
    
      '
    
    
      巴州區(qū)
    
    
      ',0
    
    
      );


    
    
      INSERT
    
    
      INTO
    
     SC_DISTRICT(IID,PARENT_ID,INAME,BZ) 
    
      VALUES
    
    (
    
      5
    
    ,
    
      2
    
    ,
    
      '
    
    
      通江縣
    
    
      ',0
    
    
      );


    
    
      INSERT
    
    
      INTO
    
     SC_DISTRICT(IID,PARENT_ID,INAME,BZ) 
    
      VALUES
    
    (
    
      6
    
    ,
    
      2
    
    ,
    
      '
    
    
      平昌縣
    
    
      ',0
    
    
      );




    
    
      INSERT
    
    
      INTO
    
     SC_DISTRICT(IID,PARENT_ID,INAME,BZ) 
    
      VALUES
    
    (
    
      7
    
    ,
    
      3
    
    ,
    
      '
    
    
      通川區(qū)
    
    
      ',0
    
    
      );


    
    
      INSERT
    
    
      INTO
    
     SC_DISTRICT(IID,PARENT_ID,INAME,BZ) 
    
      VALUES
    
    (
    
      8
    
    ,
    
      3
    
    ,
    
      '
    
    
      宣漢縣
    
    
      ',0
    
    
      );




    
    
      INSERT
    
    
      INTO
    
     SC_DISTRICT(IID,PARENT_ID,INAME,BZ) 
    
      VALUES
    
    (
    
      9
    
    ,
    
      8
    
    ,
    
      '
    
    
      塔河鄉(xiāng)
    
    
      ',1
    
    
      );


    
    
      INSERT
    
    
      INTO
    
     SC_DISTRICT(IID,PARENT_ID,INAME,BZ) 
    
      VALUES
    
    (
    
      10
    
    ,
    
      8
    
    ,
    
      '
    
    
      三河鄉(xiāng)
    
    
      ',1
    
    
      );


    
    
      INSERT
    
    
      INTO
    
     SC_DISTRICT(IID,PARENT_ID,INAME,BZ) 
    
      VALUES
    
    (
    
      11
    
    ,
    
      8
    
    ,
    
      '
    
    
      胡家鎮(zhèn)
    
    
      ',1
    
    
      );


    
    
      INSERT
    
    
      INTO
    
     SC_DISTRICT(IID,PARENT_ID,INAME,BZ) 
    
      VALUES
    
    (
    
      12
    
    ,
    
      8
    
    ,
    
      '
    
    
      南壩鎮(zhèn)
    
    
      ',1
    
    
      );

 


    
    
      INSERT
    
    
      INTO
    
     SC_DISTRICT(IID,PARENT_ID,INAME,BZ) 
    
      VALUES
    
    (
    
      13
    
    ,
    
      6
    
    ,
    
      '
    
    
      大寨鄉(xiāng)
    
    
      ',2
    
    
      );


    
    
      INSERT
    
    
      INTO
    
     SC_DISTRICT(IID,PARENT_ID,INAME,BZ) 
    
      VALUES
    
    (
    
      14
    
    ,
    
      6
    
    ,
    
      '
    
    
      響灘鎮(zhèn)
    
    
      ',2
    
    
      );


    
    
      INSERT
    
    
      INTO
    
     SC_DISTRICT(IID,PARENT_ID,INAME,BZ) 
    
      VALUES
    
    (
    
      15
    
    ,
    
      6
    
    ,
    
      '
    
    
      龍崗鎮(zhèn)
    
    
      ',2
    
    
      );


    
    
      INSERT
    
    
      INTO
    
     SC_DISTRICT(IID,PARENT_ID,INAME,BZ) 
    
      VALUES
    
    (
    
      16
    
    ,
    
      6
    
    ,
    
      '
    
    
      白衣鎮(zhèn)
    
    
      ',2
    
    );
    

如果如圖

? ORACLE 遞歸查詢(xún)

--查詢(xún)平昌縣的子節(jié)點(diǎn)

SELECT * FROM SC_DISTRICT
START WITH INAME = '平昌縣'
CONNECT BY PRIOR IID = PARENT_ID

--查詢(xún)平昌縣的父節(jié)點(diǎn)

SELECT * FROM SC_DISTRICT
START WITH INAME = '平昌縣'
CONNECT BY PRIOR? PARENT_ID= IID

--只是查詢(xún)當(dāng)前節(jié)點(diǎn)BZ為0的,但不會(huì)查詢(xún)節(jié)點(diǎn)BZ為0的子節(jié)點(diǎn)(這點(diǎn)大家注意了)

SELECT * FROM SC_DISTRICT
START WITH INAME = '平昌縣' AND BZ = 0
CONNECT BY PRIOR? PARENT_ID= IID ;

--查詢(xún)當(dāng)前節(jié)點(diǎn)和子節(jié)點(diǎn)的BZ為0的方法

SELECT * FROM SC_DISTRICT WHERE BZ = 0
START WITH INAME = '平昌縣'
CONNECT BY PRIOR PARENT_ID= IID

--此方式不僅可以查詢(xún)BZ為0的節(jié)點(diǎn)而且會(huì)不再去遍歷此節(jié)點(diǎn)的子節(jié)點(diǎn)

SELECT * FROM SC_DISTRICT START WITH INAME = '平昌縣'
CONNECT BY PRIOR PARENT_ID= IID AND BZ = 0

如果大家對(duì)遞歸的方式比較了解的話(huà)上面的幾種方式就很容易理解了。

ORACLE 遞歸查詢(xún)


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦!??!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論