我的表格如下图所示。我需要检索指定用户的最新日期。
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
我是否需要进行某种子选择才能获得最近的日期?
答案 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。