Предыдущий и следующий элемент в базе данных (prev/next)

Автор: Serg · Обновлено: 2026-10-10 · 3 мин

Часто для перелинковки требуется...

Предыдущий и следующий элемент в базе данных (prev/next). Например, для id100 это id99 и  id101

Есть несколько способов:

1 способ

следующий элемент :

SELECT *
    FROM `my_table`
    WHERE id = (SELECT (id)
        FROM my_table
        WHERE position = ($position+1))
            LIMIT 1


Предыдущий элемент:

SELECT *
    FROM my_table
    WHERE id = (SELECT (id)
        FROM my_table
        WHERE `position` = ($position-1))
            LIMIT 1

2 способ:

Следующий элемент:

SELECT * FROM foo WHERE id > 100 ORDER BY id LIMIT 1;

Предыдущий элемент:

SELECT * FROM foo WHERE id < 100 ORDER BY id DESC LIMIT 1;