2012-05-26 43 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

对不起,移动得太快!我测试了这个版本 –