2

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);

私がやりたいことは、個別のセッションで最新のエントリのみを取得することです.Androidでこれを行うにはどうすればよいですか?

編集:これがmysqlの場合、「SELECT MAX(id)AS id2、msg、セッションFROM msgs GROUP BYセッション」を実行する必要があります

4

2 に答える 2

1

完全な SQL クエリを実行するには、次を使用できますrawQuery

cursor = database.rawQuery("SELECT MAX(id) AS id2,msg, session FROM msgs GROUP BY session", null);

ではquery、次のようにパラメータを設定する必要があります。

cursor = database.query("msgs",
                        new String[] { "MAX(id) AS id2", "msg", "session" },
                        null, null,
                        "session",
                        null, null);

msg集計されたクエリで集計されていない列 ( ) を使用すると、SQLite バージョン 3.7.11 (Android API バージョン 16、Jelly Bean) より前では機能しないことに注意してください。

于 2013-11-07T08:06:04.387 に答える