0

我的 SQL 语句遇到了一个非常困难的情况,我无法弄清楚如何解决它,尽管我已经搜索过 SO(在这里Get the latest entry before a GROUP BY query

我有一张桌子:

id  date                from_name   to_name     from_id     to_id       message
1   2013-08-29 07:20:00 John        Maria       1234        4321        hi!
2   2013-08-28 05:20:00 Justin      Helen       1234        5678        Where ru?
3   2013-08-29 08:21:00 Helen       Dude        5678        8765        Good!
4   2013-08-27 02:20:00 Jesus       Aliko       9876        9988        where?
5   2013-08-26 02:20:00 Jesus       Aliko       9876        9988        what?

通常我会这样做group by

SELECT id,date,from_id,from_name,to_name,message FROM messages where to_id='9876' group by from_id order by date desc

并给我以下结果: 5 2013-08-26 02:20:00 Jesus Aliko 9876 9988 what? 这不是耶稣给 Aliko 的最新(最新)信息。我如何根据最新的条目分组?

有什么帮助吗?谢谢

4

2 回答 2

3

这会给你你想要的:

select *
from messages 
where to_id='9876'
  and date = (select max(date) from messages where to_id='9876')
于 2013-08-29T20:46:19.670 回答
0
SELECT id,date,from_id,from_name,to_name,message 
FROM messages m1 
WHERE to_id='9876' 
AND NOT EXISTS (SELECT FROM messages m2 WHERE m2.to_id = m1.to_id and m2.date > m1.date)
于 2013-08-29T20:52:33.903 回答