gpt4 book ai didi

java - Android:删除所有不在前 5 名中的 sqlite 行

转载 作者:行者123 更新时间:2023-11-30 01:20:31 25 4
gpt4 key购买 nike

我有一个排行榜数据库。目前,我将所有分数插入我的排行榜,并选择 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);

但是当我检查数据库时,仍然有大量的行,所以它不起作用。

最佳答案

您的表需要有一些唯一的 ID。使用它来标识您要保留的行:

DELETE FROM ES
WHERE ID NOT IN (SELECT ID
FROM ES
ORDER BY Score DESC, Time ASC
LIMIT 5);

关于java - Android:删除所有不在前 5 名中的 sqlite 行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37180665/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com