m2bazar
@m2bazar
Вечный студент

Как получить следующее и предыдущее значение?

Приветствую,

Представим что есть примитивная таблица из одного столбца в котором хранятся произвольные числовые значения. Есть ли какой-то встроенные в mysql способ получения N следующих M предыдущих значений зная определенное значение?

Например, таблица хранит значения - 2, 6, 10, 15, 1, 14
Имеем значение 10. Как получить предыдущее (6) и следующие (15) значения?

Других полей на основе которых можно было бы реализовывать логику в таблице нет (автоинкремента нет ). Числа произвольные и высчитать "соседей" по какой-либо формуле нельзя. Вариант с получением всех записей, например, в массив не подойдет.
  • Вопрос задан
  • 279 просмотров
Пригласить эксперта
Ответы на вопрос 3
WinPooh32
@WinPooh32
Stack Overflow answer searching expert
Нужно хранить смещение в отдельном столбце. Зная смещение текущей строки, потом прыгать с помощью LIMIT и OFFSET.
Еще есть курсоры, но там можно только в одну сторону смещаться.

Скорее всего реляционные БД под вашу задачу не подходят.
Ответ написан
Комментировать
@galaxy
Других полей на основе которых можно было бы реализовывать логику в таблице нет (автоинкремента нет )

Тогда задача не решается, ибо нельзя дать определение предыдущему и следующему без ORDER BY (а судя по "2, 6, 10, 15, 1, 14" по основному полю ORDER BY сделать нельзя).

Если можно как-то отсортировать (допустим, по основному полю value), то следующий так:
SELECT value FROM table WHERE value > 10 ORDER BY VALUE LIMIT 1
Ответ написан
Комментировать
@d-stream
Готовые решения - не подаю, но...
https://dev.mysql.com/doc/refman/8.0/en/window-fun...

ну либо в сильно искусственном описании:

select val where val<10 order by val limit N
union all
select val where val val>10 order by val limit M
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы