Group By为我提供了数据库中最早的结果

时间:2015-01-02 10:34:37

标签: mysql

我'我目前正在使用以下SQL从数据库中获取最新消息。以下SQL为我提供了数据库中最早的消息。我'正在按 message_replay_id 进行分组,因为这是数据库中的公共列,而我是'我也用它作为参考。

数据库结构和查询结果

enter image description here

这是所有未使用查询的记录 enter image description here

的MySQL

SELECT * FROM messages
WHERE message_from = '1' || message_to = '1'
GROUP BY message_replay_id 
ORDER BY message_id DESC

如您所见,message_id是

  

11,7,5,1(最早的ID' s)

但实际上最新的ID是

  

13,7,6,20

我的问题再一次是我做错了什么我'我无法从数据库中获得最新结果。

1 个答案:

答案 0 :(得分:1)

要获得最新结果,您需要匹配最新一行。

最简单的方法是使用子查询获取每个message_replay_id的最新行,然后将其连接到消息以获取其余的详细信息。

SELECT a.*
FROM messages a
INNER JOIN
(
    SELECT message_replay_id, MAX(message_id) AS latest_message
    FROM messages
    WHERE message_from = '1' || message_to = '1'
    GROUP BY message_replay_id 
) b
ON a.message_replay_id = b.message_replay_id
AND a.message_id = b.latest_message
ORDER BY a.message_id DESC