<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    不可不說
    隨心所欲,無往不利!
    posts - 88,  comments - 92,  trackbacks - 0
    Oracle中Start with...Connect By實現部門多級遞歸理解及用法

    其基本語法是:

    select ... from tablename start with cond1
    connect by cond2
    where cond3;

    簡單說來是將一個樹狀結構存儲在一張表里,比如一個表中存在兩個字段: id,parentid,那么通過表示每一條記錄的parent是誰,就可以形成一個樹狀結構。用上述語法的查詢可以取得這棵樹的所有記錄。
    其中COND1是根結點的限定語句,當然可以放寬限定條件,以取得多個根結點,實際就是多棵樹。
    COND2是連接條件,其中用PRIOR表示上一條記錄,比如 CONNECT BY PRIOR ID=PRAENTID就是說上一條記錄的ID是本條記錄的PRAENTID,即本記錄的父親是上一條記錄
    COND3是過濾條件,用于對返回的所有記錄進行過濾

    例子:
    創建示例表:
    CREATE TABLE TBL_TEST
    (
    ID NUMBER,
    NAME VARCHAR2(100 BYTE),
    PID NUMBER DEFAULT 0
    );

    插入測試數據:

    INSERT INTO TBL_TEST(ID,NAME,PID) VALUES('1','10','0');
    INSERT INTO TBL_TEST(ID,NAME,PID) VALUES('2','11','1');
    INSERT INTO TBL_TEST(ID,NAME,PID) VALUES('3','20','0');
    INSERT INTO TBL_TEST(ID,NAME,PID) VALUES('4','12','1');
    INSERT INTO TBL_TEST(ID,NAME,PID) VALUES('5','121','2');

    從Root往樹末梢遞歸(取所有點)

    select * from TBL_TEST
    start with id=1
    connect by prior id = pid

    從末梢往樹ROOT遞歸(只取根結點,根結點的根結點......)

    select * from TBL_TEST
    start with id=5
    connect by prior pid = id
    注:
    prior 寫在哪個字段那邊,那么就用start with 這條記錄的該項值 與 別的記錄的另一個字段的值去關聯;
    start with 可以不寫,默認為所有記錄

    例如
    select * from TBL_TEST
    start with id=5
    connect by prior pid = id
    因為pid=2 與id=5 在本數據表中為同一條數據, 因此可以理解為:

    select * from TBL_TEST
    start with pid=2
    connect by prior pid = id (個人認為這樣更好理解)

     ****************************************************

    此語句可以直接分層次顯示

    SELECT lpad('|-',(level-1)*4,'|-')||lpad('『',2)||di_name||rpad('』',2)
    di_name,di_id
    FROM t_dictionary_link CONNECT BY PRIOR di_id=di_protypeid
    START WITH di_id=-1
    |-|-『公司架構』                      2
    |-|-|-|-『芯碼科技』                  3
    |-|-|-|-|-|-『開發部』                4
    |-|-|-|-|-|-|-|-『JAVA組』           11
    |-|-|-|-|-|-|-|-『.NET組』          102
    |-|-|-|-|-|-『銷售部』              261
    |-|-|-|-|-|-『客服部』    

    對各階層記錄排序使用
    ORDER SIBLINGS BY ID
    posted on 2010-05-23 23:02 藍劍 閱讀(1758) 評論(0)  編輯  收藏 所屬分類: Oracle


    <2010年5月>
    2526272829301
    2345678
    9101112131415
    16171819202122
    23242526272829
    303112345

    常用鏈接

    留言簿(6)

    隨筆分類(62)

    隨筆檔案(90)

    文章檔案(9)

    相冊

    友情鏈接

    搜索

    •  

    積分與排名

    • 積分 - 325249
    • 排名 - 172

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 人碰人碰人成人免费视频| 国产成人精品亚洲2020| 亚洲一本大道无码av天堂| 亚洲va中文字幕无码久久| 亚洲日韩久久综合中文字幕| 成av免费大片黄在线观看| 日韩免费a级毛片无码a∨| 亚洲精品V欧洲精品V日韩精品| 亚洲精品123区在线观看| 成人影片麻豆国产影片免费观看| 久久亚洲最大成人网4438| 免费不卡视频一卡二卡| 久久精品国产亚洲沈樵| 人人玩人人添人人澡免费| 亚洲午夜免费视频| 高清永久免费观看| 亚洲国产精品一区第二页| 久久美女网站免费| 亚洲一级毛片免费看| 免费无码中文字幕A级毛片| 亚洲视频网站在线观看| 国产无遮挡裸体免费视频在线观看| 亚洲国产精品SSS在线观看AV| 天天影院成人免费观看| 亚洲精品女同中文字幕| 国产亚洲精品线观看动态图| 在线成人精品国产区免费| 亚洲欧洲精品视频在线观看| 久久精品视频免费播放| 亚洲sss综合天堂久久久| 四虎影视精品永久免费网站| 亚洲欧美日韩中文字幕一区二区三区 | 亚洲日韩AV一区二区三区中文| 国产一级理论免费版| 免费人成激情视频在线观看冫| 激情内射亚洲一区二区三区爱妻| 免费在线观看你懂的| 91精品免费不卡在线观看| 亚洲成色WWW久久网站| 99在线视频免费观看视频| yellow视频免费看|