2011-05-07 43 views
0

你好,我使用此代码diplay我对话列表的Android SQLite的帮助下选择最后10

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

这是最后一次谈话,但逆转(最后一个字是怎么回事)如何选择只有10最后一次对话 或删除并离开10最后的谈话,并显示此...不能帮助我开始的想法我不明白...

回答

1

为它的解决方案的提示,感谢感谢感谢

通过固定固定感谢

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

是相同的 “最后弦乐ORDERBY = Constants.TABLE_CONVERSATION_FIELD_DATE +” DESC LIMIT 10“;” 这是最后一次对话,但倒过来的最后一个单词已到达列表 – user2080866 2011-05-07 15:39:13

+0

对不起,但我不明白你在说什么,你能解释一下你得到的错误吗? – gcores 2011-05-07 15:43:16

+0

的选择是错的我的名单通常逆转为10:00字词1
10:01字词2,有了这个,我WORD2在上和字1中下来,瞧:) 但完全在过去的10交谈... – user2080866 2011-05-07 15:52:45

2

尝试此查询,

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

这将获取近10行的表。 用任何年龄表的列替换* any_column_name *。

问候, 硝酸乙醇沙阿

+0

感谢如何适应我的代码? – user2080866 2011-05-17 16:43:16