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分