В MySQL 5.x нельзя использовать LEAD()
или LAG()
. Однако вы можете упорядочить строки и ограничить набор результатов 1 строкой. См. Ниже
Для следующего элемента из 100128
вы можете использовать:
select *
from t
where (contractnumber, itemnumber) > (
select contractnumber, itemnumber from t where itemnumber = 100128
)
order by contractnumber, itemnumber
limit 1;
Результат:
contractnumber itemnumber
-------------- ----------
1236 100001
Для предыдущий элемент из 100128
вы можете использовать:
select *
from t
where (contractnumber, itemnumber) < (
select contractnumber, itemnumber from t where itemnumber = 100128
)
order by contractnumber desc, itemnumber desc
limit 1;
Результат:
contractnumber itemnumber
-------------- ----------
1235 100127
См. рабочий пример на DB Fiddle .