我在我的 android 应用程序中创建了一个 Sqlite 数据库,它看起来像这样:
create table msgs ( id integer primary key autoincrement, msg text not null, session text not null, sender text not null);
我可以像这样获取所有条目,但我不明白发生了什么。
String[] allColumns = {"msg","session","sender"};
Cursor cursor = database.query(msgs, allColumns, id = insertId, null, null, null, null);
我想做的是仅获取具有不同 session 的最新条目我如何在 android 中执行此操作?
编辑:如果这是 mysql,我应该执行“SELECT MAX(id) AS id2,msg, session FROM msgs GROUP BY session” 但是不能接缝让它在 SQLite 中工作:/
最佳答案
要执行完整的 SQL 查询,您可以使用 rawQuery
:
cursor = database.rawQuery("SELECT MAX(id) AS id2,msg, session FROM msgs GROUP BY session", null);
使用查询
,您必须像这样设置参数:
cursor = database.query("msgs",
new String[] { "MAX(id) AS id2", "msg", "session" },
null, null,
"session",
null, null);
请注意,在 SQLite 版本 3.7.11(Android API 版本 16,Jelly Bean)之前,在聚合查询中使用未聚合的列(msg
)不起作用。
关于Android SQLite 不同的选择?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19826074/