MySQL:如何获取两个用户之间的最后一条消息?

时间:2017-09-11 12:20:30

标签: mysql

这就是我的数据库的样子

id | Sender  |  Receiver |  Send_Date   | Message
=========================================================
1  | user A  |   user B  |  1463311906 | hello
2  | user B  |   user A  |  1463311906 | hi
3  | user A  |   user B  |  1463311906 | howdy
4  | user C  |   user A  |  1463311906 | great
5  | user A  |   user C  |  1463311906 | good

我想选择两个不同用户之间的最后一个对话消息。例如,一个列表,其中显示用户A和B之间的最后一条消息,用户B和C之间的最后一条消息,依此类推,其中未定义用户B或C.用户A是使用该应用程序的用户,他希望看到他与所有其他用户(B,C等)的最后一条消息,或者是最后一条消息是他或来自对方用户。

到目前为止,我已尝试使用以下查询,但这显示用户A和用户B在用户A和用户B之间的对话中发送的最后消息,与用户A相同和C,当我只想要在这些用户之间发送或接收的最后消息时。

SELECT send_date
     , message
     , reciever
     , sender 
  FROM 
     ( SELECT * 
         FROM messages 
        WHERE sender = user A or reciever = user A
     ) AS newmesssages 
 GROUP 
    BY sender
     , reciever 
 ORDER 
    BY send_date DESC

1 个答案:

答案 0 :(得分:-1)

SELECT send_date, message, receiver, sender
FROM messages
WHERE (sender = :userA AND reciever = :userB) OR (sender = :userB AND reciever = :userA)
ORDER BY send_date DESC
LIMIT 1