假设我有一个包含三列的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);
我已经看到了相关问题,但是我无法找到将其应用到这种情况的方法 - 任何关于如何实现这一目标的方向都将受到赞赏。