2015-12-30 67 views
0

如何使用LIMIT關鍵字將這兩個查詢合併到一個查詢中以獲取最後10條消息?如何組合這兩個SQLite查詢?

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的記錄。

回答

2

這些是你原來的兩個條件:

senderid = ? AND receiverid = ? 

爲了將它們結合起來,用OR:

(senderid = ? AND receiverid = ?) OR 
(receiverid = ? AND senderid = ?) 

這需要四個參數值。與編號參數,您可以重新使用它們代替:

(senderid = ?1 AND receiverid = ?2) OR 
(receiverid = ?1 AND senderid = ?2) 
+0

如何使用此條件進入查詢? – jinkal

+0

就像原來的一樣。 –

0

做一個LIMIT(或一個GROUP_BY)的技巧是將它加到SORT子句的末尾。例如,假設你有你的id列名爲senderId,你可以使用SORT子句"senderid DESC LIMIT 10"

現在我不確定什麼數據庫(可能是數據庫直接),但你應該使用內容提供商,因此參數是' URI,投影,選擇,參數排序」和下面的應該是你想要什麼

cursor = cp.query(Chat_MESSAGE, messagecolumns, "senderid=? AND " + "receiverid=?", new String[] { sender_id, receiver_id }, "senderid DESC LIMIT 10"); 

如果對這一問題的出現是因爲你不知道如何讀光標僅僅指剛添加評論,我會告訴你