Oracle查询当前某条数据的前一行数据与后一行数据!.......解决问题悬赏20分

2025-03-24 06:05:31
推荐回答(3个)
回答1:

给你一个提示,Oracle每行数据都会有一个ROWID,解析出行号。你可以找到上一行的ROWID和下一行的ROWID,而且用ROWID查询,效率非常高!!!

如果你是要排序过的数据,只能用索引组织表。或者先排序,用分析函数得到一个编号伪劣,然后根据这个编号再找前一条,或者后一条。

另外,Oracle SQL中还有一个函数,LEAD,可以找到上一行的值,当然还有一个下一行的值。可以百度一下,我不太记得了。
如:
SELECT last_name, hire_date,
LEAD(hire_date, 1) OVER (ORDER BY hire_date) AS "NextHired"
FROM employees WHERE department_id = 30;

回答2:

select rn from (select a.*,rownum rn from table a) where idx='b3wow9'这里的rn取出来为2,那么减rn-1就是上一条,加1就是下一条了

回答3:

使用Oracle的分析函数