Android - SQLite选择每个不同列值的前N次出现

时间:2016-03-12 01:20:37

标签: android sqlite limit-per-group

假设我有一个包含三列的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);

我已经看到了相关问题,但是我无法找到将其应用到这种情况的方法 - 任何关于如何实现这一目标的方向都将受到赞赏。

0 个答案:

没有答案