2012-05-26 75 views
2

我需要從每個對話選擇2個用戶SQL SELECT與分組

之間最後一條記錄

我的表:

id | sender_id | recipient_id | message 
1  2   3    msg_1 
2  3   2    msg_2 
4  2   3    msg_4 
5  2   3    msg_5 
7  4   3    msg_7 
8  3   4    msg_8 

後選擇它應該找到這個記錄

id | sender_id | recipient_id | message 
5  2   3    msg_5 
8  3   4    msg_8 
+0

的如果您將時間戳添加到每一行,問題就會更加嚴重。 – WojtekT

+1

id 6從哪裏來? –

+0

我的錯誤,應該有5 –

回答

3
SELECT m.* 
FROM mytable m 
WHERE id = (SELECT MAX(id) 
      FROM  mytable 
      WHERE (sender_id = m.sender_Id 
         OR recipient_id = m.sender_id 
        ) 
        AND (recipient_id = m.recipient_Id 
          OR sender_id = m.recipient_id 
         ) 
     ) 
+0

這段代碼選擇2,5,7和8 –

+0

對不起,移動得太快!我測試了這個版本 –