cjbars
@cjbars

Как выбирать записи из базы циклично?

Помогите сообразить.
Дано
База данных с записями, которые добавляются и удаляются.
Записи группируются по категориям.
Грубо говоря одна категория записей это стопка бумажных листов.
Записей десятки тысяч в каждой категории.

Требуется: взять самый верхний лист из стопки, вернуть его вызывающему скрипту, а сам лист положить в самый низ стопки. и так по кругу.

Не могу сообразить как это сделать логически, ну и как следствие технически.

Была идея прописывать каждой позиции порядковые номера, и после выбора элемента обновлять все номера в базе. Но это как то накладно.
Была идея помечать последний выбранный элемент флагом (аналог курсора). Но не понятно что делать если помеченный элемент будет удален из базы.
Чувствую что есть простое решение, но не могу сообразить.
  • Вопрос задан
  • 141 просмотр
Решения вопроса 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Добавить поле `lastUse` TIMESTAMP с индексом;
UPDATE `table` SET @id := `id`, `lastUse` = NOW() ORDER BY `lastUse` LIMIT 1;
SELECT * FROM `table` WHERE `id` = @id;

Такая комбинация запросов ещё и позволяет работать параллельно нескольким скриптам.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы