chelkaz
@chelkaz

Как придумать авто-подчистку таблицы?

Ребята, у меня есть таблица, с полями
id
name
vid
comm
created_at
updated_at

В эту таблицу постоянно вносятся данные, а потом выводятся последнии по дате внесения максимум по 500 записей с одинаковыми значениями в поле vid
Логично, что записи за пределами выборки из 500 уже не пригодятся.
Как сделать так, что если записей с одинаковым vid больше 500, то удалить лишние по дате более старые?
  • Вопрос задан
  • 370 просмотров
Решения вопроса 1
chelkaz
@chelkaz Автор вопроса
Почитав доки... В итоге идеальный вариант под фреймворк Laravel без велосипеда бедет:
$count = DB::table('tbl_name')->where('vid', '=', $vid)->count();
DB::table('tbl_name')->where('vid', '=', $vid)
     ->orderBy('created_at', 'asc')
     ->skip(500)->take($count-500)
     ->delete();
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
wielski
@wielski
✔ Совет: Вам помогли? Отметьте ответы решением.
Есть множество решений, вот в качестве примера одно из них:

1) С помощью count и group by получаем список vid - количество, где количество более 500
2) Проходимся по массиву vid, выполяем запрос удаления с лимитом, и сортировкой по дате.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы