android SQLite帮助选择最后10个

时间:2011-05-07 15:23:47

标签: android sqlite select

您好,我使用此代码来显示我的对话列表

private Cursor getMessages( SQLiteDatabase db, boolean justNewMessages) {


    final String table = Constants.TABLE_CONVERSATION;
                                                                            //index
    final String[] columns = { Constants.TABLE_CONVERSATION_FIELD_ID,       //0
                               Constants.TABLE_CONVERSATION_FIELD_DATE,     //1
                               Constants.TABLE_CONVERSATION_FIELD_FROM,     //2
                               Constants.TABLE_CONVERSATION_FIELD_TO,       //3
                               Constants.TABLE_CONVERSATION_FIELD_MSG       //4
        };

    String selection;

    if(justNewMessages) {
        selection = "(" + Constants.TABLE_CONVERSATION_FIELD_FROM + " = '" + jid +"' or "
                        + Constants.TABLE_CONVERSATION_FIELD_TO + " = '" + jid + "') and "
                        + Constants.TABLE_CONVERSATION_FIELD_NEW + " = '1'";
    } else {
        selection = "(" + Constants.TABLE_CONVERSATION_FIELD_FROM + " = '" + jid +"' or "
                        + Constants.TABLE_CONVERSATION_FIELD_TO + " = '" + jid + "')";
    }

    final String[] selectionArgs = null;
    final String groupBy = null;
    final String having = null;
    final String orderBy = Constants.TABLE_CONVERSATION_FIELD_DATE;

    return db.query(table, columns, selection, selectionArgs, groupBy, having, orderBy);
}

我想最后选择10次尝试

final String orderBy = Constants.TABLE_CONVERSATION_FIELD_DATE + " DESC LIMIT 10";

这是最后一次谈话,但是相反(最后一个字是up)如何仅选择最后一次会话 或删除并离开最后10个对话并显示此...不能帮助我开始创意我不理解......

3 个答案:

答案 0 :(得分:2)

试试这个查询,

Select * from [table] LIMIT 
((Select count([any_column_name]) from [table])-10),10

这将获取表格的最后10行。 将* any_column_name *替换为yr table的任何列。

此致 Nital Shah

答案 1 :(得分:1)

FIXED感谢您提供的解决方案,谢谢谢谢

修正
final String tableff ="Select "+Constants.TABLE_CONVERSATION_FIELD_ID+","+Constants.TABLE_CONVERSATION_FIELD_DATE+","+Constants.TABLE_CONVERSATION_FIELD_FROM+","+Constants.TABLE_CONVERSATION_FIELD_TO+","+Constants.TABLE_CONVERSATION_FIELD_MSG+" from ["+table+"] WHERE "+selection+" LIMIT ((Select count(["+Constants.TABLE_CONVERSATION_FIELD_DATE+"]) from ["+table+"] WHERE "+selection+")-10),10";

    return db.rawQuery(tableff, selectionArgs);

答案 2 :(得分:0)

试试这个:

final String orderBy = Constants.TABLE_CONVERSATION_FIELD_DATE + " DESC";
final String limit= 10;

return db.query(table, columns, selection, selectionArgs, groupBy, having, orderBy, limit);