如何使此MySQL查询像imessage一样对组/消息进行排序?

如何使此MySQL查询像imessage一样对组/消息进行排序?,mysql,sql,Mysql,Sql,这是我的代码,它将显示所有聊天信息组以及在创建组时按排序的消息 我试图按照收到的最后一条消息对messagegroup列表进行排序,而不是按照imessage或任何文本消息的工作方式进行排序 您现在没有消息。 以下是数据存储方式的预览: 那么,我如何根据收到的最后一条消息而不是创建最后一个组的时间来对消息组进行排序呢?首先,您可以执行MAX和group by以获取每个组id的最新时间戳,如 SELECT MAX(timestamp) as latestTimeStamp,group_id FRO

这是我的代码,它将显示所有聊天信息组以及在创建组时按排序的消息

我试图按照收到的最后一条消息对messagegroup列表进行排序,而不是按照imessage或任何文本消息的工作方式进行排序

您现在没有消息。 以下是数据存储方式的预览:


那么,我如何根据收到的最后一条消息而不是创建最后一个组的时间来对消息组进行排序呢?

首先,您可以执行MAX和group by以获取每个组id的最新时间戳,如

SELECT MAX(timestamp) as latestTimeStamp,group_id
FROM messages
GROUP BY group_id
然后,您可以将该内部查询表调用为具有最新时间戳的M,并将其与消息组(如

SELECT MG.*,M.latestTimeStamp
FROM message_groups MG
INNER JOIN
   (SELECT MAX(timestamp) as latestTimeStamp,group_id
    FROM messages
    GROUP BY group_id)as M
ON MG.group_id = M.group_id
ORDER BY M.latestTimeStamp DESC

美好的我添加了另一个分组id以使其正常工作。你这个男人。这是我完成的查询:SELECT MG.*,M.latestTimeStamp FROM message_group MG INNER JOIN SELECT MAXtimestamp as latestTimeStamp,group_id FROM messages BY group_idas M ON MG.group_id=M.group_id,其中username='$_SESSION[username]'或recipients='$_SESSION[username]'逐组\u idORDER BY M
SELECT MG.*,M.latestTimeStamp
FROM message_groups MG
INNER JOIN
   (SELECT MAX(timestamp) as latestTimeStamp,group_id
    FROM messages
    GROUP BY group_id)as M
ON MG.group_id = M.group_id
ORDER BY M.latestTimeStamp DESC