如何使用LIMIT
关键字将这两个查询合并到一个查询中以获取最近10条消息?
Cursor cursor0 = db.query(Chat_MESSAGE, messagecolumns, senderid + "=? AND " + receiverid + "=?", new String[] {
sender_id, receiver_id }, null, null, null, null);
Cursor cursor1 = db.query(Chat_MESSAGE, messagecolumns, senderid + "=? AND " + receiverid + "=?", new String[] {
receiver_id, sender_id }, null, null, null, null);
表是
chat id sender_id receiver_id message
1 1 2 hii
2 1 2 hello
3 2 1 good
4 2 1 nice
5 1 5 hii
我想获得1-4条记录。
答案 0 :(得分:2)
这是您最初的两个条件:
senderid = ? AND receiverid = ?
receiverid = ? AND senderid = ?
要合并它们,请使用OR:
(senderid = ? AND receiverid = ?) OR
(receiverid = ? AND senderid = ?)
这需要四个参数值。使用带编号的参数,您可以重复使用它们:
(senderid = ?1 AND receiverid = ?2) OR
(receiverid = ?1 AND senderid = ?2)
答案 1 :(得分:0)
执行LIMIT(或GROUP_BY)的技巧是将其添加到SORT子句的末尾。例如,假设您的id列名为senderId,则可以使用SORT子句"senderid DESC LIMIT 10"
现在我不确定db是什么(可能是数据库直接),但你应该使用内容提供商,所以params是' uri,projection,selection,arguments,sort'以下应该是你想要的
cursor = cp.query(Chat_MESSAGE, messagecolumns, "senderid=? AND " + "receiverid=?", new String[] { sender_id, receiver_id }, "senderid DESC LIMIT 10");
如果出现此问题是因为您不知道如何阅读光标jsut添加评论,我会告诉您