Как сделать SQL-запрос для удаления записей так, чтобы всегда оставалось 1000 последних записей

xintrea

Новичок
Есть SQLite база данных, в которую каждую минуту записывается несколько записей. В ней есть поле timeStamp, в котором хранится время добавления.

Задача: удалить записи, время добавления которых меньше определённого значения, но при этом всегда оставлять последние 1000 значений, независимо от их времени добавления.

Какой SQL-запрос можно использовать для решения такой задачи?
 

DIG

Новичок
Партнер клуба
Готовый SQL-запрос для выбора этих записей: выбрать все записи из "таблицы" сортировать по "дате добавлениия" предел 1000
Надо его переделать из "выбрать" в "удалить". Но мне это не под силу.
 

artoodetoo

великий и ужасный
Волшебный NOT IN решает:
Код:
DELETE FROM `footable`
WHERE `id` NOT IN(
  SELECT *
  FROM (
    SELECT `id`
    FROM `footable`
    ORDER BY ваша_сортировка
    LIMIT 1000
  ) AS f2
)
Промежуточный SELECT нужен только для обхода "особенности" MySQL, который не позволяет апдейтить или удалять с подзапросом к той же таблице.
 
Сверху