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