我有一个如下所示查询:
SELECT * FROM
( SELECT DISTINCT CASE
WHEN user1_id = 1
THEN user2_id
ELSE user1_id
END userID,conversationId
FROM conversations
WHERE 1 IN (user2_id,user1_id))dt
INNER JOIN users on dt.userID = users.id
它从users表中返回conversationId和用户信息。我还想根据conversationId从message表中添加最后一条消息(具有最大messageId的消息)。最后一件事是按messageId对所有结果进行排序
我尝试使用另一个INNER JOIN,它看起来像:
INNER JOIN message on dt.conversationId = message.conversationId
这是在结果中添加消息,但我只想得到最后一条消息(如前所述,messageId最大的那个)。我想我必须以某种方式实现MAX,但我不知道如何实现。同样的事情是按messageId对所有结果进行排序,因此messageId最大的结果将排在第一位。感谢所有的建议。
2条答案
按热度按时间zour9fqk1#
您可以在相关子查询中获取会话的最大messageId,并将其用于连接条件:
a1o7rhls2#
因此,所有问题的解决方案都是以下查询