0

SOを検索しましたが、SQLステートメントで非常に困難な状況にあり、それを解決する方法がわかりません(ここでは、GROUP BYクエリの前に最新のエントリを取得します

私はテーブルを持っています:

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? これは、イエスからアリコへの最新の(最新の)メッセージではありません。最新のエントリでグループ化するにはどうすればよいですか?

何か助けはありますか?ありがとう

4

2 に答える 2

3

This would give you what you want:

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 に答える