现在有一个表,有a,b两个字段。问题不太好描述。举个例子来说明。例如有如下记录:字段a       字段b
a             b
x             z
z             t
t             m
m             n
n             y
y             y
库表中的记录是这样的。上一条记录的b 字段的值,一定是下一条记录的a 字段的值。
如果给出a字段的某个值,例如给出字段a 的值为z ,那么应该查到的结果为:tmnyy
如果给出字段a的值为m,那么应该查出的结果为n,y,y现在我是用递归来做的,就是说比如给了a字段值为z,查找到对应的b字段为t,再拿着a 字段为t,查找到对应的b字段为m ……如此下去。
但是这样做效率非常低,因为迫切希望得到一种高效的解决方案。
请各位不吝赐教,谢谢了。

解决方案 »

  1.   

    这个用SQL语句来搞定不太容易,写段小程序就很容易搞定了
      

  2.   

    select tt.b
    from tab tt
    where rownum >= (select rownum id 
                     from tab t
                     where t.a = &input
                    )
      

  3.   

    select a,b
    from tab
    start with a='t'
    connect by prior b=a
      

  4.   

    如楼上,使用 start with ... connect by prior ...
      

  5.   

    学习来了!
    ----------------------------------
    start with ... connect by prior ...
    是oracle啥时候个函数?
      

  6.   

    to:Eric_1999(╙@^@╜) 
    你写的好像不对,select rownum id from tab t where t.a = &input
    这里的rownum 好像永远是1呀!
      

  7.   

    典型的层次化查询函数:
    SELECT table.b
    FROM table
    START WITH table.a='a'
    CONNECT BY table.a=PRIOR table.b