У меня есть база данных для моей таблицы лидеров. В настоящее время я вставляю все оценки в свою таблицу лидеров и выбираю 5 наивысших баллов для показа в своем приложении. Я думаю, что это займет слишком много места, чтобы никогда не удалять другие баллы, поэтому я бы хотел их удалить. Как я могу это сделать?Android: удалите все строки sqlite NOT IN top 5
Вот как я выбираю топ-5 баллов, занимает первое по счету и вторым по времени, если оценка равна:
public Cursor gethmLeaderboard(SQLiteDatabase db){
String[] columns = {TableInfo.LB_RANK, TableInfo.LB_SCORE, TableInfo.LB_TIME};
Cursor c = db.query(TableInfo.TABLE_HM, null, null, null, null, null, TableInfo.LB_SCORE + " DESC, " + TableInfo.LB_TIME + " ASC", "5");
return c;
}
Вот как я создаю мой стол:
public String CREATE_HMQUERY = "CREATE TABLE " + TableInfo.TABLE_HM + "("
+ TableInfo.LB_RANK + " INTEGER PRIMARY KEY AUTOINCREMENT DEFAULT 1 ," + TableInfo.LB_SCORE +
" INT,"+ TableInfo.LB_TIME + " VARCHAR);";
Я хочу удалите все строки НЕ В этом запросе. Как я могу это сделать?
Edit:
Я попробовал этот запрос:
public String DEL_ALLBUTES = "DELETE FROM " +
TableInfo.TABLE_HM + " WHERE " +
TableInfo.LB_RANK + " NOT IN (SELECT " +
TableInfo.LB_RANK + " FROM " +
TableInfo.TABLE_HM + " ORDER BY " +
TableInfo.LB_SCORE + " DESC, " +
TableInfo.LB_TIME + " ASC LIMIT 5);";
В этом формате:
db.rawQuery(DEL_ALLBUTES, null);
Но когда я проверяю базу данных все еще есть тонны строк, чтобы он не Работа.
Я попробовал. См. Мое редактирование. Однако это не работает. – Milap
Затем вы должны использовать правильное имя таблицы и уникальный идентификатор. –
Извините, я переключил вещи вокруг, которые, возможно, были в замешательстве. Мое новое редактирование - это то, что я пытаюсь сделать. Он также имеет идентификатор первичного ключа. – Milap