sql server:
select LIDNO into #a from emptable
where empname='小李' and ...
while exists (
select LIDNO from emptable
where empno in (select LIDNO from #a)
and lidno not in (select LIDNO from #a)
)insert into #a
select LIDNO from emptable
where empno in (select LIDNO from #a)
and lidno not in (select LIDNO from #a)select empno,empname,EMPLEVEL
from emptable where empno in (select LIDNO from #a)
order by EMPLEVEL ascdrop table #a

解决方案 »

  1.   

    oracle中可以用一句sql完成,因为有connect by
      

  2.   

    Select LidNo from TableName where EmpNo = '小李' order by EmpLevel
    也许你会说,这个方法不严谨,不过员工一共能有多少个级别呢?按照从大到小,的排序,不是也比较容易让人读懂吗?
      

  3.   

    这要用到自连接:
    select a.LIDNO,a.EMPNAME,a.EMPLEVEL
    from TABLENAME a, TABLENAME b
    where a.EMPNO = b.LIDNO and b.EMPNAME = '小李' 
    order by EMPLEVEL asc
      

  4.   

    select empno,empname,EMPLEVEL
    from TableName where LidNo in (select LIDNO from TableName where EmpNo = '小李' )
    order by EMPLEVEL asc
      

  5.   

    这个表实际是个树型结构,而问题的实质是要找到从子结点(小李)到根结点(董事长)的一条路径。我觉得应该是个嵌套的查询,次数为从小李到董事长之间的级数。如果不知道级数则很难用一句SQL语句表达。
      

  6.   

    这其实是一个树结构存储在一张表里.在标准SQL中是无法完成楼主的要求的,只有一级一级地递归去作.听起来好象很麻烦,但作出来之后速度并不慢.