在Oracle中,假设我有一个返回以下列表的查询:
ID Sequence#
12 1
15 3
25 5
在这种情况下,我所知道的是某行的ID(假设为12),我需要返回具有下一个序列号的行的ID,在这种情况下为3(id = 15)
我该怎么办?我知道有一个Oracle函数lead
,但我无法成功阻止它。
答案 0 :(得分:2)
是的,您可以使用lead
函数获取下一个值。这是一个如何完成它的例子。
-- sample of data from your question
SQL> with t1(ID, Sequence#) as
2 (
3 select 12, 1 from dual union all
4 select 15, 3 from dual union all
5 select 25, 5 from dual
6 )
7 select *
8 from (select id
9 , sequence#
10 , lead(sequence#) over(order by id) next_sequence#
11 , lead(id) over(order by id) next_id#
12 from t1
13 )
14 where id = 12
15 ;
ID SEQUENCE# NEXT_SEQUENCE# NEXT_ID#
---------- ---------- -------------- ----------
12 1 3 15
答案 1 :(得分:1)
SELECT * FROM table1 where ID in (SELECT min(ID) FROM table1 WHERE ID > 12)
答案 2 :(得分:0)
Select sequence from my_ table where id=(select min(id) from my_table where sequence> 1)
将上述查询中的(1)替换为您要搜索其下一个
的任何值