如果我知道当前数据的ID,我怎么知道它上一条记录,和下一条记录

解决方案 »

  1.   

    分析函数lead 或 lagLEAD 
    功能描述:LEAD与LAG相反,LEAD可以访问组中当前行之后的行。Offset是一个正整数,其默认值为1,若索引超出窗口的范围,就返回默认值(默认返回的是组中第一行)
    SAMPLE:下面的例子中每行的"NextHired"返回按hire_date排序的下一行的hire_date值SELECT last_name, hire_date, 
    LEAD(hire_date, 1) OVER (ORDER BY hire_date) AS "NextHired" 
    FROM employees WHERE department_id = 30;LAST_NAME HIRE_DATE NextHired
    ------------------------- --------- ---------
    Raphaely 07-DEC-94 18-MAY-95
    Khoo 18-MAY-95 24-JUL-97
    Tobias 24-JUL-97 24-DEC-97
    Baida 24-DEC-97 15-NOV-98
    Himuro 15-NOV-98 10-AUG-99
    Colmenares 10-AUG-99
      

  2.   

    方法很多,可以使用普通SQL来查询或者使用分析函数,
    关键你要描述要实现什么功能,一般是先给出表和数据脚本,结果数据列表。
      

  3.   

    就是我有件商品,我要显示上一个商品,和下一个商品。我想用普通的SQL
      

  4.   

    如要查询Staffno是6-1102的前一条记录
    select * from staff where staff_no=(select c.p from (select staff_no,lag(staff_no,1,0) over (order by staff_no) as p from staff) c where c.staff_no='6-1102')
    如要查询其后一条记录
    select * from staff where staff_no=(select c.n from (select staff_no,lead(staff_no,1,0) over (order by staff_no) as n from staff) c where c.staff_no='6-1102')