Задать вопрос
soundie
@soundie
Преподаватель, программист, писатель

Как выбрать следующие строчки в таблице после каждой уже выбранной строчки?

Есть простая таблица из двух столбцов, где ID идут по возрастанию, но не всегда на единицу больше предыдущего значения:
1 aaa
5 bbb
7 ccc
8 ddd

К этой таблице идёт обычный SELECT по какому-либо WHERE критерию. Например были выбраны две строчки с идентификаторами 5 и 8.

При помощи какого SQL-запроса можно выбрать следующие по порядку строки после этих выбранных строк (если сортировка идёт по ID)?

То есть правильным ответом такого SQL-запроса для вышеуказанной таблицы должна быть одна строка (она идёт после записи с идентификатором 5):

7 ccc

Так как после идентификатора 8 строки в таблице нет, то она и не выводятся. Но если бы была, то SQL-запрос должен её вывести. Нужна именно одна последующая запись после каждой выбранной ранее. Дублей ID в таблице нет.

P.S. Понятно что можно создавать для каждой отдельной такой строчки отдельный SQL-запрос где получать следующую запись, но если строк будет много, то это получится куча SQL-запросов, что не очень хорошо. Как всё оформить в одном запросе, который на выходе получает несколько ранее выбранных идентификаторов (при помощи обычного SELECT WHERE)?
  • Вопрос задан
  • 37 просмотров
Подписаться 1 Средний 2 комментария
Помогут разобраться в теме Все курсы
  • Яндекс Практикум
    Инженер по тестированию
    5 месяцев
    Далее
  • Нетология
    Инженер по тестированию
    8 месяцев
    Далее
  • Thinknetica
    Профессиональная разработка на Ruby on Rails
    9 месяцев
    Далее
Решения вопроса 1
soundie
@soundie Автор вопроса
Преподаватель, программист, писатель
Удалось при помощи вот этой вот вырвиглазной магии с оконными функциями (костыль, но работает):
SELECT group_concat(id) OVER (
	ORDER BY id ROWS BETWEEN CURRENT ROW AND 1 FOLLOWING EXCLUDE CURRENT ROW
) AS next_ids
FROM table
ORDER BY id;


Тем не менее, более элегантные версии конечно приветствуются.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы
ITK academy Нижний Новгород
от 50 000 до 90 000 ₽
ITK academy Казань
от 50 000 до 90 000 ₽