У меня есть таблица ревизий, и мне нужно иметь возможность n-го последнего обновления. У меня есть запрос, который дает мне самую последнюю ревизию записи enitity, но мне нужен один для последней записи изменений.
revisions
--+---------+--------+----------+-------
id|entity_id|contents|revisor_fk|revised
Запрос должен принимать значения от 0 до n. Если ввод 0, он является самым последним, 1 - одной версией назад или второй самой последней, 2 - ревизиями назад или 3-м последним и т.д. И если ввод больше изменений, тогда у объекта есть ревизии, которые он должен вернуть нет строк.
Любые мысли?
Предполагая, что revised
является меткой времени
SELECT fields
FROM revisions
WHERE entity_id = :your_entity_id
ORDER BY revised DESC
LIMIT :which_revision, 1
Перейдите через это в 2937755
SELECT *
FROM revisions a
WHERE (4) = (select count(*)
from revisions b
where b.`revised` > a.`revised`)AND
`entity_id` = 1
Но решение @Matti Virkkunen намного приятнее.
LIMIT
поддерживается MySQL, Postgres и SQLite. Для подходов для других СУБД см. En.wikipedia.org/wiki/Select_%28SQL%29#Limiting_result_rows