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

数据列无法进行大于小于判断,比如有一张表(table)有字段 idx,name,age有数据 a0sbs92,张三,23 b3wow9,李四,20 x02322x,王五,28假如当前查询了数据select * from table where name='李四',怎么来查询它的前一条数据与后一条数据

给你一个提示,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;
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-04-19
select rn from (select a.*,rownum rn from table a) where idx='b3wow9'这里的rn取出来为2,那么减rn-1就是上一条,加1就是下一条了
第2个回答  2013-04-20
使用Oracle的分析函数
相似回答