这就是我的数据库的样子
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
答案 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