如果用oracle就一点都不难。
SELECT ID,
       DECODE(X.ROWNUM - Y.ROWNUM, -1, '上一条记录', '下一条记录') rec_seq
  FROM (SELECT ROWNUM, ID
          FROM myTABLE) X,
       (SELECT ROWNUM, ID
          FROM myTABLE) Y
 WHERE Y.ID = myID
   AND (X.ROWNUM = Y.ROWNUM - 1  -- 上一条记录
        OR X.ROWNUM = Y.ROWNUM + 1) -- 下一条记录但是这样做如果表很大的话会很慢的。不理解为什么要根据表的物理存储位置来查询,通常没有意义。

解决方案 »

  1.   

    在sql2000中要用ADO的recordset对象中的movenext、movelast方法来实现
      

  2.   

    sql2000中要用ADO的recordset对象的movenext、movelast方法来实现
      

  3.   

    在SQL SERVER中可以这样做,
    假设您的表如下:
    create table mytable(id int not null primary key,col1 char(20),col2 varchar(40))
    第一种方法
    1.新建立临时表
    create table #mytemptable(seqid int not null identity(1,1),id int not null)
    insert into #mytemptable(id) select id from mytable
    然后,若想取到前一条纪录的id,则
    select id from #mytemptable where seqid=(select seqid from #mytemptable where id=@your_id_value) - 1
    下一条纪录

    select id from #mytemptable where seqid=(select seqid from #mytemptable where id=@your_id_value) + 1第二种方法(id 必须不同,一般应该是这样),速度可能很慢
    例如,去前一个id:
    select id from 
    (select seqid=(select count(*) from mytable t1 where t1.id<t2.id),id,name from mytable t2) kk 
    where seqid= 
    ((select seqid from(select seqid=(select count(*) from mytable t1 where t1.id<t2.id),id,name from mytable t2) k where id=@your_id_value)-1)第三种方法:
    利用游标,慢慢的滚,这种方法很简单
      

  4.   

    如果你的意思是要根据记录插入的先后次序查找上下两条记录的话,不妨在表中加一个自动增量类型的字段。比如:加入一个字段seq_no,那就可以用以下的sql完成:
    上一条记录:
    SELECT ID
      FROM myTABLE
      WHERE SEQ_NO In (SELECT MAX(SEQ_NO)
                         FROM myTABLE
                        WHERE SEQ_NO < (SELECT SEQ_NO
                                          FROM myTABLE
                                         WHERE ID = myID)
                       );
    下一条记录:
    SELECT ID
      FROM myTABLE
      WHERE SEQ_NO In (SELECT MIN(SEQ_NO)
                         FROM myTABLE
                        WHERE SEQ_NO > (SELECT SEQ_NO
                                          FROM myTABLE
                                         WHERE ID = myID)
                       );