获取 SQLite 数据库中最频繁的项目
Getting most frequent item in SQLite Database
我正在使用此代码根据它在数据库中出现的次数来获取集合中播放次数最多的歌曲:
public Cursor getMostPlayed(){
String query = "SELECT * " +
", COUNT(*) AS 'value'" +
" FROM " + DatabaseHelper.TABLE_COLLECTIONS_TRACKS +
" WHERE " + DatabaseHelper.KEY_CATEGORY + " = 'User Activity'" +
" GROUP BY " + DatabaseHelper.KEY_NAME +
" ORDER BY 'value' DESC";
return database.rawQuery(query, null);
}
问题是,当我查询游标以获取结果时,虽然它确实获得了播放次数最多的项目,但它并未按值对列表进行排序,而是按名称对列表进行排序。
我的查询有什么问题?
您必须删除 value
别名周围的字符串定界符。
String query = "SELECT * " +
", COUNT(*) AS value" +
" FROM " + DatabaseHelper.TABLE_COLLECTIONS_TRACKS +
" WHERE " + DatabaseHelper.KEY_CATEGORY + " = 'User Activity'" +
" GROUP BY " + DatabaseHelper.KEY_NAME +
" ORDER BY value DESC";
我正在使用此代码根据它在数据库中出现的次数来获取集合中播放次数最多的歌曲:
public Cursor getMostPlayed(){
String query = "SELECT * " +
", COUNT(*) AS 'value'" +
" FROM " + DatabaseHelper.TABLE_COLLECTIONS_TRACKS +
" WHERE " + DatabaseHelper.KEY_CATEGORY + " = 'User Activity'" +
" GROUP BY " + DatabaseHelper.KEY_NAME +
" ORDER BY 'value' DESC";
return database.rawQuery(query, null);
}
问题是,当我查询游标以获取结果时,虽然它确实获得了播放次数最多的项目,但它并未按值对列表进行排序,而是按名称对列表进行排序。
我的查询有什么问题?
您必须删除 value
别名周围的字符串定界符。
String query = "SELECT * " +
", COUNT(*) AS value" +
" FROM " + DatabaseHelper.TABLE_COLLECTIONS_TRACKS +
" WHERE " + DatabaseHelper.KEY_CATEGORY + " = 'User Activity'" +
" GROUP BY " + DatabaseHelper.KEY_NAME +
" ORDER BY value DESC";