ORACLE 查询某条数据的相邻两条数据(注ID可能是不连续的)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ORACLE 查询某条数据的相邻两条数据(注ID可能是不连续的)相关的知识,希望对你有一定的参考价值。

这个你可以考虑下你的逻辑。
比如说你的相邻的数据,什么样的数据才是你所谓的相邻的数据呢 是ID相隔最近的是吗?
CREATE TABLE TB(ID INT ,COL varchar2(20));
INSERT INTO TB (ID,COL)VALUES(1,'第一行');
INSERT INTO TB (ID,COL)VALUES(2,'第二行');
INSERT INTO TB (ID,COL)VALUES(3,'第三行');
INSERT INTO TB (ID,COL)VALUES(5,'第四行');
INSERT INTO TB (ID,COL)VALUES(7,'第五行');
INSERT INTO TB (ID,COL)VALUES(8,'第六行');
INSERT INTO TB (ID,COL)VALUES(9,'第七行');
INSERT INTO TB (ID,COL)VALUES(11,'第八行');

/*
ID 为5的行的上一行 是 3,'第三行'
SQL> SELECT * FROM (SELECT * FROM TB WHERE ID <5 ORDER BY ID DESC ) WHERE ROWNUM=1 ;

ID COL
--------------------------------------- --------------------
3 第三行

ID 为5的行的下一行 是 7,'第五行'
SQL> SELECT * FROM (SELECT * FROM TB WHERE ID >5 ORDER BY ID ASC ) WHERE ROWNUM=1 ;

ID COL
--------------------------------------- --------------------
7 第五行

Executed in 0.031 seconds

在实际工作中需要把里面的用procdure中的参数代替。
*/
参考技术A 用rownum

以上是关于ORACLE 查询某条数据的相邻两条数据(注ID可能是不连续的)的主要内容,如果未能解决你的问题,请参考以下文章

Oracle 获取相邻两条记录的值 lead over 和 lag over(案例:计算相邻两条记录的差值)

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

Oracle数据库随机取某条记录的一个字段值

Oracle某条资料被锁如何解锁 (ScriptRunner,v$locked_object,SID和SERIAL#)

oracle sql语句获取前两条数据

oracle 取重复数据中一条