2015-02-10 3 views
-1

Я пытаюсь создать инструкцию DELETE для моей базы данных SQLite, которая будет проверять, что что-либо по X количеству записей будет удалено. Я не слишком хорошо знаком с SQL, поэтому я не уверен, как это записать, и мне также нужно убедиться, что записи сначала отсортированы по дате, который хранится как INTEGER, поэтому я уверен, m сохраняя самые новые строки X и удаляя старые записи.SQLite iOS DB удаляет старые записи

Любая помощь по поводу того, как это сделать, очень ценится.

+0

Вам не нужно сортировать записи, и вам не нужны подвыборки. Просто удалите из таблицы, где datefield

ответ

0

Это может быть достигнуто в SQLite с помощью Sub запроса и использования лимита

Здесь ваш подзапрос будет возвращать все ID, которые необходимы, чтобы удаленные на основе вашего предела X (5). Я надеюсь, что это вам поможет

DELETE FROM TABLENAME WHERE ID IN ( 
    SELECT ID FROM TABLENAME 
    WHERE DATE < strftime('%s','now') limit 5 
    ); 
0

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

DELETE FROM mytable WHERE date_column >= (
    SELECT date_column 
    FROM mytable 
    ORDER BY date_column 
    OFFSET num_rows_you_want_to_keep 
    LIMIT 1 
) 
Смежные вопросы