Android SQLite 不同的选择?

标签 android sqlite

我在我的 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/

相关文章:

android - SQLite 是否保证结果的顺序与表相匹配?

android - Android 上的 SQL 客户端

android - ListView invalidate() 与 invalidateViews() 之间的区别?

java - GC 会在 Android 上自动处理/释放在 jni 中分配的内存吗?

android - smd_private.h : No such file or directory

java - 如何解决预填充数据库上涉及 'notNull' 和 'primaryKeyPosition' 的 Room 无效架构错误?

android - 附近 "COLUMN_NAME": syntax error (code 1) in SQLite

java - Android 绘制实际公交路线折线

android - Windows 10 上的 meteor install-sdk android 出错

ruby-on-rails - sqlite3 1.3.6从heroku推送拒绝