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

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

2021-08-06 11:33:56

给你一个提示,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;
游戏人间

2021-01-29 22:41:25

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

2022-11-07 02:09:32

使用Oracle的分析函数
收起 1条折叠回答