表数据如下:id     name    fatherid   info
-------------------------------------------
001    主轴承    002      --
002    车轮      005      --
003    轮胎      002      --
004    车窗      005      --
005    汽车      0        --
006    玻璃      004      --
要求查询出来的数据如下排序:
id     name    fatherid   info
-------------------------------------------
005    汽车      0        --002    车轮      005      --
001    主轴承    002      --
003    轮胎      002      --004    车窗      005      --
006    玻璃      004      --

解决方案 »

  1.   

    SQL> select * from ttt;ID         NAME       FATHERID   INFO
    ---------- ---------- ---------- ----------
    001        主轴承     002        --
    002        车轮       005        --
    003        轮胎       002        --
    004        车窗       005        --
    005        汽车       0          --
    006        玻璃       004        --6 rows selectedSQL> 
    SQL> select id, name, fatherid from ttt
      2  connect by prior id = fatherid
      3  start with fatherid = '0'
      4  /ID         NAME       FATHERID
    ---------- ---------- ----------
    005        汽车       0
    002        车轮       005
    001        主轴承     002
    003        轮胎       002
    004        车窗       005
    006        玻璃       0046 rows selected
      

  2.   

    树型搜索,
    按照楼主的意思,我觉得SQL 这样写比较好,
    SELECT ID,NAME,FATHERID FROM TTT
    CONNECT BY FATHERID = PRIOR ID
    START WITH FATHERID = '0'
    -----------
    我觉得这样更符合实际,容易理解,
      

  3.   

    select id,name,fatherid,info connect by prior id=fatherid order by fatherid