Oracle选择上下条件的行

时间:2013-08-01 19:58:08

标签: sql oracle select conditional

我从Oracle数据库中选择了某个值。一旦我从表中选择了值,是否可以直接获得我选择的值之上和之下的值?如果是这样,最好的方法是什么?有类似的东西:

SELECT *
 FROM table_name
  WHERE name = 'F100'

所以我想在表格

中直接选择'F100'上方和下方的值

数据:

ID  | Name
123 | F300 <-
123 | F100 <-
123 | F700 <-
123 | F900
123 | F860
129 | F654
129 | F700 <-
129 | F100 <-
129 | F320 <-
129 | F790

1 个答案:

答案 0 :(得分:2)

表中的行本质上是无序的。像“first”,“last”,“next”和“previous”这样的概念都要求您指定某种方式对数据进行排序。假设有一些数字列,例如,您要排序的id,并且您想要基于id的“下一个”或“上一个”数据,并且您想要下一个和之前的数据评估他们是否有name“F100”

SELECT *
  FROM (SELECT id, 
               name, 
               lag(id) over (order by id) prior_id,
               lag(name) over (order by id) prior_name,
               lead(id) over (order by id) next_id,
               lead(id) over (order by id) next_name
          FROM your_table)
 WHERE name = 'F100'