假如在oracle的某表中有几千条数据,怎么才能高效率的查询到某ID的上一ID或下一ID?

解决方案 »

  1.   

    select * from table where id exist ('id+1','id-1')
      

  2.   

    select r,e.* from (select rownum r,last_name,salary from (
    select last_name,salary from employees order by nvl(salary,0) desc)) e
    where r between 6 and 8;
      

  3.   

    SELECT * FROM table
    WHERE id<:id
    AND ROWNUM=1
    ORDER BY id DESCSELECT * FROM table
    WHERE id>:id
    AND ROWNUM=1
    ORDER BY id
      

  4.   


    select lag(id,1)  over(order by id) "id-1",
           id,
           lead(id,1)  over(order by id) "id+1"
     from tab
      

  5.   

    select
      nex.id, nex.nextid,pri.priorid 
    from
      (
        select
          t1.id id,
          lead(t1.id,1) over(order by t1.id) nextid
        from
          item t1) nex,
      (
        select
          t2.id id,
          lag(t2.id,1) over(order by t2.id) priorid
        from
          item t2) pri,
     where
       nex.id = pri.id
       and nex.id = 所需ID