使用group by mySQL后获取最新日期

时间:2013-05-10 22:58:29

标签: mysql sql

我的表格如下图所示。我需要检索指定用户的最新日期。

id sender_id receiver_id content date               
-- --------- ----------- ------- ----               
1  5         7           test    2013-03-13 10:33:54
2  13        7           test 2  2012-03-13 12:01:36
3  5         7           test 3  2013-01-05 09:15:37
4  13        7           test 4  2013-04-05 08:17:39

我当前的SQL看起来像这样:

SELECT * FROM `messages` WHERE receiver_id=7 group by sender_id

我希望结果集只包含两个条目,每个条目的最新日期如下:

4  13        7           test 4  2013-04-05 08:17:39
1  5         7           test    2013-03-13 10:33:54

我是否需要进行某种子选择才能获得最近的日期?

1 个答案:

答案 0 :(得分:2)

您按sender_id进行分组,但返回所有列。非聚合行的值可以不受限制,并且不受订单的影响。

您可以使用这样的查询来获得所需的结果:

SELECT *
FROM   messages
WHERE  (sender_id, receiver_id, date) IN (
          SELECT   sender_id, receiver_id, MAX(date)
          FROM     messages
          WHERE    receiver_id=7
          GROUP BY sender_id, receiver_id)

请参阅小提琴here

相关问题