【发布时间】:2016-05-12 21:29:51
【问题描述】:
我的排行榜有一个数据库。目前,我将所有分数插入我的排行榜,并选择 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 );";
我想删除所有不在该查询中的行。我该怎么做?
我的尝试:
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);
但是当我检查数据库时,仍然有很多行,所以它不起作用。
【问题讨论】:
标签: android sqlite android-sqlite