Храните 150 последних записей на пользователя - PullRequest
0 голосов
/ 09 января 2012

У меня есть таблица mysql, где я отслеживаю пользовательские настройки. Таблица состоит из user_id, имени и отметки времени

(user_id, имя ПК)

Если запись уже существует, я обновляю метку времени до текущего времени

Теперь я хотел бы, чтобы 150 последних записей на пользователя были активными. Каждый раз, когда пользователь входит в систему, я хочу выполнить запрос, чтобы удалить все записи, которые должны быть удалены.

Однако я не могу разобраться с запросом на удаление, который достигает чего-то подобного.

Любая помощь?

Ответы [ 2 ]

1 голос
/ 09 января 2012

Я отредактировал ответ.Я говорил вам, чтобы удалить 150 самых последних, это не то, что вы хотите .. Вот как удалить все остальные строки:

DELETE FROM preferences WHERE user_id NOT IN (SELECT user_id FROM preferences ORDER BY timestamp DESC LIMIT 150)
0 голосов
/ 09 января 2012

последовал за хаком, упомянутым здесь http://helphow.info/?qa=209695/solved-mysql-delete-from-limit-x-y-would-not

По сути, я создал временную таблицу со всеми записями, которые хотел удалить, а затем сделал удаление с внутренним объединением

Работал отлично

...