-1

我正在从 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
4

1 回答 1

3

表中的行本质上是无序的。“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'
于 2013-08-01T20:05:31.017 回答