SQL → Узнать следующую и предыдущую запись в выборке по полю с неуникальными значениями

06.08.2012

Есть таблица с данными:

+----+---------------------+
| id | date                |
+----+---------------------+
|  1 | 2012-08-06 22:09:40 |
|  2 | 2012-08-06 22:09:44 |
|  3 | 2012-08-06 22:10:00 |
|  4 | 2012-08-06 22:10:00 |
|  5 | 2012-08-06 22:10:17 |
+----+---------------------+

Нужно, зная id и date определённой записи, узнать следующую и предыдущую запись в такой вот выборке:

SELECT *
FROM `table`
ORDER BY `date` ASC, `id` ASC

Получить следующую запись:

SELECT *
FROM `table`
WHERE `date` > $date OR (`date` = $date AND `id` > $id)
ORDER BY `date` ASC, `id` ASC
LIMIT 1

Получить предыдущую запись:

SELECT *
FROM `table`
WHERE `date` < $date OR (`date` = $date AND `id` < $id)
ORDER BY `date` DESC, `id` DESC
LIMIT 1

По материалам хабрахабра.

Похожие записи

Комментарии

Гость
07.09.2012, 20:42

Спасибо оченоь помогло в листинге между файлами!

Гость
03.03.2015, 12:34

Большое спасибо за статью, она помогла мне.

Димарик
16.03.2015, 00:51

Спасибо автор! Клик тебе за статью по рекламе

Кво мастер
09.11.2023, 11:08

Спасибо автору за статью . А я то голову ломаю, а тут так просто . Примеры перед носом. Удобно. Рилл )))

Добавить комментарий