SQL-запрос для n-го последнего обновления

0

У меня есть таблица ревизий, и мне нужно иметь возможность n-го последнего обновления. У меня есть запрос, который дает мне самую последнюю ревизию записи enitity, но мне нужен один для последней записи изменений.

revisions
--+---------+--------+----------+-------
id|entity_id|contents|revisor_fk|revised

Запрос должен принимать значения от 0 до n. Если ввод 0, он является самым последним, 1 - одной версией назад или второй самой последней, 2 - ревизиями назад или 3-м последним и т.д. И если ввод больше изменений, тогда у объекта есть ревизии, которые он должен вернуть нет строк.

Любые мысли?

Теги:

2 ответа

2
Лучший ответ

Предполагая, что revised является меткой времени

SELECT fields
FROM revisions
WHERE entity_id = :your_entity_id
ORDER BY revised DESC
LIMIT :which_revision, 1
  • 0
    +1 Это самый упрощенный запрос, который я видел для этой проблемы. Очень плотно!
  • 0
    LIMIT поддерживается MySQL, Postgres и SQLite. Для подходов для других СУБД см. En.wikipedia.org/wiki/Select_%28SQL%29#Limiting_result_rows
0

Перейдите через это в 2937755

SELECT *
  FROM revisions a
 WHERE (4) = (select count(*)
                from revisions b
               where b.`revised` > a.`revised`)AND
`entity_id` = 1

Но решение @Matti Virkkunen намного приятнее.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню