0
我有我的排行榜數據庫。目前,我將所有分數插入我的排行榜,並選擇5個最高分數顯示在我的應用程序。我認爲這會佔用太多的空間,以至於不能刪除其他分數,所以我想刪除它們。我怎樣才能做到這一點?刪除所有不在特定行中的SQLite行
以下是我選擇的前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);";
我想刪除不在該查詢中的所有行。我怎樣才能做到這一點?
我已經試過:
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);
但是,當我檢查數據庫仍有噸行,以便它不工作。
OK!我得到了不同的結果。現在我在我的execSQL()語句中得到一個運行時錯誤 – Milap
看起來db似乎是空的......但我不能說,因爲我看不到該命令附近的上下文。 –
我從exec語句中刪除了null,並且它不是db.execSQL(DEL_ROWHM5);它的工作原理。 – Milap