xandeadx.ru Блог музицирующего веб-девелопера

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

Опубликовано в

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

+----+---------------------+
| 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

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

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

Комментарии RSS

Хорошо

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

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

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

ThanX

Благодарю, выручил)

Оставить комментарий

Содержимое этого поля является приватным и не будет отображаться публично. Если у вас есть аккаунт в Gravatar, привязанный к этому e-mail адресу, то он будет использован для отображения аватара.
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Доступные HTML теги: <a> <i> <b> <strong> <code> <ul> <ol> <li> <blockquote> <em> <s>
  • Строки и параграфы переносятся автоматически.
  • Подсветка кода осуществляется с помощью тегов: <code>, <css>, <html>, <ini>, <javascript>, <sql>, <php>. Поддерживаемые стили выделения кода: <foo>, [foo].

Подробнее о форматировании