删除所有不在特定行中的 SQLite 行

Delete all SQLite rows NOT IN specific rows

我有一个排行榜数据库。目前,我将所有分数插入到我的排行榜中,select 5 个最高分数显示在我的应用程序中。我觉得其他乐谱永远删不掉太占地方了,所以我想删掉。我该怎么做?

以下是我如何 select 排名前 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;

}

以下是我创建 table 的方法:

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);

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

execSQL() 用于 命令(不是 SELECT 的所有内容)。
并且 rawQuery() 用于 查询 (SELECT).