2014-02-15 4 views
1

Мне нужно выполнить этот ниже запрос.сохранить последние 10 и удалить все остальные строки - sqlite

db.delete(TABLE_SESSIONS, selectQuery, null); 

Запрос на выбор должен быть за исключением последних 10 записей.

Как достичь этого?

String selectQuery = "SELECT * FROM " + TABLE_SESSIONS +" WHERE " +KEY_SESSION_ID+ " IN (SELECT "+KEY_SESSION_ID + " FROM "+TABLE_SESSIONS+" WHERE " +KEY_SESSION_ID+ " ORDER BY Col LIMIT 10)"; 

Может кто-нибудь улучшить мой запрос? (Я не очень хорошо с запросом)

+0

Что именно вы получаете, если передаете этот запрос? – InnocentKiller

+0

Обратитесь к этому [sql-query-delete-all-records-from-the-table-except-latest-n] (http://stackoverflow.com/questions/578867/sql-query-delete-all-records-from -The стол, за исключением последнего,-п) –

ответ

3

попробуйте выполнить запрос.

String selectQuery = "SELECT * FROM " + TABLE_SESSIONS +" WHERE " +KEY_SESSION_ID+ " IN (SELECT "+KEY_SESSION_ID + " FROM "+TABLE_SESSIONS+" WHERE " +KEY_SESSION_ID+ " ORDER BY Col DESC LIMIT 10)"; 
2

SELECT * FROM TABLE_SESSIONS WHERE YOUR_SORT_FIELD NOT IN (select TOP 10 YOUR_SORT_FIELD from TABLE_SESSIONS order by YOUR_SORT_FIELD DESC)

DESC и ASC может быть изменена, если вам нужно в последний раз десять или последние 10

YOUR_SORT_FIELD и является поле, которое идентифицирует последние данные

3

SQLiteDatabasedelete() принимает в выражении WHERE и не в SELECT заявлении.

Если ваш выбор возвращает те строки, которые вы хотите сохранить:

String selectQuery = "SELECT * FROM " + TABLE_SESSIONS +" WHERE " +KEY_SESSION_ID+ " IN (SELECT "+KEY_SESSION_ID + " FROM "+TABLE_SESSIONS+" WHERE " +KEY_SESSION_ID+ " ORDER BY Col LIMIT 10)" 

... Вы можете использовать это в удалить с помощью NOT IN так:

db.delete(TABLE_SESSIONS, 
    "ROWID NOT IN (SELECT ROWID FROM " + TABLE_SESSIONS + " ORDER BY Col LIMIT 10)", 
    null); 

ROWID является псевдонимом INTEGER PRIMARY KEY таблицы; условие WHERE, которое у вас было в вашем подзапросе, не обязательно, поскольку выбран любой ненулевой идентификатор.

Смежные вопросы