Как в postgresql получить следующую строку таблицы с составным первичным ключом по первичному ключу предыдущей записи?
Как в postgresql получить следующую строку таблицы с составным первичным ключом по первичному ключу предыдущей записи? Составной ключ может быть любой, не только из интов.
create table testobject6(
pk1 int8,
pk2 int8,
pk3 int8,
pk4 int8,
pk5 int8,
PRIMARY KEY(pk1, pk2, pk3, pk4, pk5)
);
insert into testobject6
(pk1, pk2, pk3, pk4, pk5)
values
(1,2,3,4,5),
(3,1,4,0,7),
(2,9,5,5,6),
(1,8,8,5,7),
(1,9,0,0,8);
select *
from testobject6
order by pk1, pk2, pk3, pk4, pk5;
select *
from testobject6
where ... ??? -- допустим следующую за (2,9,5,5,6)
order by pk1, pk2, pk3, pk4, pk5
limit 1;
Ответы (2 шт):
Автор решения: Alexander Pavlov
→ Ссылка
select * ,
lead(pk1) over next_row as next_pk1,
lead(pk2) over next_row as next_pk2,
lead(pk3) over next_row as next_pk3,
lead(pk4) over next_row as next_pk4,
lead(pk5) over next_row as next_pk5
from testobject6
window next_row as (order by pk1, pk2, pk3, pk4, pk5 rows between current row and 1 following)
order by pk1, pk2, pk3, pk4, pk5;
Автор решения: Андрей
→ Ссылка
SELECT *
FROM testobject6
WHERE (pk1, pk2, pk3, pk4, pk5) > (2,9,5,5,6)
ORDER BY pk1, pk2, pk3, pk4, pk5
LIMIT 1;