see sql reference about "Hierarchical Queries"

解决方案 »

  1.   

    connect by 
    start with
      

  2.   

    select decode(parentid,1,'1','1') parentid,id,data
    from tab 
    connect by prior id=parentid
    start with parentid is null例子:
    SQL> select * from aa;ID FID
    -- ---
    1  0
    2  1
    3  1
    4  2
    5  3
    6  4
    6  57 rows selectedSQL> 
    SQL> select lpad(id,level*2+length(id),' ') id
      2  from aa
      3  connect by prior id = fid
      4  start with fid = 0;ID
    --------------------------------------------------------------------------------
      1
        2
          4
            6
        3
          5
            67 rows selectedSQL> select decode(fid,'1','1','1') fid,id
      2  from aa
      3  connect by prior id=fid
      4  start with fid='1';FID ID
    --- --
    1   2
    1   4
    1   6
    1   3
    1   5
    1   6