Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/208.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何组合这两个SQLite查询?_Android_Sqlite - Fatal编程技术网

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)