现有部门表a有三个字段pk(主键)、name(名称)、parentpk
假设表中现有以下数据:
 pk    name      parentpk
1001   test1
1002   test2     1001
1003   test3     1002
1004   test4     1003
1005   test5     1004
问题是怎么用一、二条SQL语句得到pk=1005的所有上级父部门(包括父部门的父部门一至到根)记录,就像这样:
pk=1005的所有父部门列表
pk     name      parentpk
1001   test1     
1002   test2     1001
1003   test3     1002
1004   test4     1003
请各位高手赐教!!!!

解决方案 »

  1.   

    不是很明白你说的意思啊
    你上面的要求这个就可以
     select * from a where pk< 1005
      

  2.   

    是一个嵌套,一条select不可能出得来
      

  3.   

    select * from a 
    start with pk = 1005
    connect by prior parentpk = pk
    order by id ;
      

  4.   

    select * from a 
    start with pk = 1005
    connect by prior parentpk = pk
    order by level desc;
      

  5.   

    select pk,name,parentpk from a 
    WHERE LEVEL > 1
    start with pk = 1005
    connect by prior parentpk = pk
    order by level desc;