Блог

MySQL: Определить предыдущую и следующую запись

Есть задача, нужно определить какой предыдущий и следующий ID.  Конечно можно легко узнать использую PHP или Python, или любой другой язык программирования, когда работаешь с большим объемом данных, необходимо большинство задач перекладывать на Базу данных или более мощный язык программирования.

Такую задачу можно переложить на Базу данных. В MySQL можно решить при помощи оператора UNION. Ниже показан пример как выглядит запрос.

SELECT * FROM Table WHERE id = 2
UNION
   SELECT * FROM Table WHERE id = (SELECT MAX(id) FROM Table WHERE id < 2)
UNION
   SELECT * FROM Table WHERE id = (SELECT MIN(id) FROM Table WHERE id > 2)

Результатом будет 3 поля в идеале если есть предыдущий или следующая запись, но может быть 2 или 1 будет соответствовать хоть одному из условий. А может и ничего если не будет соответствовать условию.

Успехов