我从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
答案 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'