1

假设我有一个包含三列的 SQL 表“歌曲”:“标题”、“艺术家”和“排名”:

 track   | artist | ranking     
---------+--------+---------  
    A    |   A1   |   3
    B    |   A1   |   2
    C    |   A1   |   1
    D    |   A2   |   4
    E    |   A3   |   7
    F    |   A3   |   6
    G    |   A3   |   5

我想做一个 SELECT 查询,该查询将在按排名排序时只返回每个艺术家的前 N ​​行(例如两行)。我知道在艺术家列上使用 GroupBy 将返回每个艺术家的一行,但是在这种情况下我想要两个像这样:

 track   | artist | ranking     
---------+--------+---------  
    A    |   A1   |   1
    B    |   A1   |   2
    D    |   A2   |   4
    E    |   A3   |   5
    F    |   A3   |   6

如果可能的话,我最好想在 android 中使用 queryBuilder 构建它,这与我设法得到的一样接近:

SQLiteDatabase db = getReadableDatabase();
SQLiteQueryBuilder qBuilder = new SQLiteQueryBuilder();

    String[] sqlSelect = {"title", "artist", "ranking"};
    String sqlTable = "songs";
    String orderBy = "ranking DESC";

    qBuilder.setTables(sqlTable);
    cur = qBuilder.query(db, sqlSelect, null, null, null, null, orderBy);

我已经看到了相关的问题,但是我无法找到将其应用于这种情况的方法 - 任何有关如何实现此目的的方向都将不胜感激。

4

0 回答 0