можно увидеть предыдущий ряд после выбранного? - PullRequest
0 голосов
/ 08 июля 2019

я создал такую ​​таблицу

create table numbers(

first int ...

second int...

third int ...

fourth ....

fifth int..

sixt int ...

id primary key..
...);

у каждого пола есть идентификатор для идентификации.

я бы хотел увидеть предыдущую строку выбранного мной примера

select * from numbers where first=6 And second=54;

в качестве вывода (у нас будут все числа, первые и вторые - это 6 и 54 с идентификатором)

first   second  3    4    5   6    id

6        54    10   11   13  66    10


6        54    7    8    9   10    520

я бы тоже хотел увидеть строку 9 и строку 519, есть ли способвидишь те?я знаю, что мог бы сделать

select * from numbers where id=9;
select * from nbumbers where id= 519;

, но у меня есть 50-60 рядов, которые невозможно сделать индивидуально один за другим.

Ответы [ 3 ]

1 голос
/ 08 июля 2019

вы можете использовать

SELECT * FROM NUMBERS WHERE ID IN 
(SELECT ID -1 FROM NUMBERS WHERE first = 6 and second = 54);
1 голос
/ 08 июля 2019

Вы можете использовать lead():

select n.*
from (select n.*,
             lead(first) over (order by id) as next_first,
             lead(second) over (order by id) as next_second
      from numbers n
     ) n
where next_first = 6 and next_second = 54;

Другой метод будет использовать совокупную сумму:

select n.*
from (select n.*,
             max(case when first = 6 and second = 54 then id end) over
                 (order by id
                  rows between unbounded preceding and 1 preceding
                 ) as prev_id
      from numbers n
     ) n
where prev_id = id;
0 голосов
/ 08 июля 2019

Вы, вероятно, хотите:

select
  n.*
from (
  select * from numbers where first = 6 and second = 54
) x
join numbers n on n.id = x.id - 1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...