我在MYSQL中有一个数据库,它的聊天表如下所示。
我正在使用此查询来获取这些记录
SELECT * FROM (
SELECT * FROM `user_chats`
WHERE sender_id =2 OR receiver_id =2
ORDER BY id DESC
) AS tbl
GROUP BY sender_id, receiver_id
但我的要求只是5,4个ID的记录。基本上我的要求id提取2个用户之间的最后一次对话。这里在2和3之间的用户对话中有2条记录,我们只希望它们中的最后一条,即id = 5,这里不需要id = 2。
那么我们如何为该结果编写查询呢?
最佳答案
SELECT
*
FROM
user_chats uc
WHERE
not exists (
SELECT
1
FROM
user_chats uc2
WHERE
uc2.created > uc.created AND
(
(uc.sender_id = uc2.sender_id AND uc.reciever_id = uc2.reciever_id) OR
(uc.sender_id = uc2.reciever_id AND uc.reciever_id = uc2.sender_id)
)
)