Android 如何组合这两个SQLite查询?
如何使用Android 如何组合这两个SQLite查询?,android,sqlite,Android,Sqlite,如何使用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_MESSA
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条记录。限制(或分组方式)的诀窍是将其固定在SORT子句的末尾。例如,假设您的id列名为senderId,您可以使用SORT子句
“senderId DESC LIMIT 10”
现在我不确定db是什么(可能是直接的数据库),但您应该使用一个内容提供者,因此参数是“uri、投影、选择、参数、排序”,下面应该是您想要的
cursor = cp.query(Chat_MESSAGE, messagecolumns, "senderid=? AND " + "receiverid=?", new String[] { sender_id, receiver_id }, "senderid DESC LIMIT 10");
如果这个问题是因为您不知道如何读取光标而产生的,请添加注释,我将向您展示这两个原始条件:
senderid = ? AND receiverid = ?
要组合它们,请使用或:
(senderid = ? AND receiverid = ?) OR
(receiverid = ? AND senderid = ?)
这需要四个参数值。使用编号的参数,您可以重新使用它们:
(senderid = ?1 AND receiverid = ?2) OR
(receiverid = ?1 AND senderid = ?2)
如何将此条件用于查询?与原始条件一样。
(senderid = ?1 AND receiverid = ?2) OR
(receiverid = ?1 AND senderid = ?2)