2011-04-20 39 views
0

我有一个名为'message'的简单表,由'id'列和'date'列组成。可以有多个id具有相同的值。我正在查找每个ID最多返回三个的查询,并且这三个查询必须是日期最长的查询。根据ID和日期返回多个组的结果

所以查询会产生这样的事:

id | date 
--- ------------------- 
36 2011-04-01 08:41:19 
36 2011-04-17 08:05:18 
36 2011-04-17 18:48:49 
39 2011-03-31 05:45:15 
39 2011-03-31 05:50:07 
39 2011-03-31 05:56:23 
41 2011-04-11 07:02:27 
41 2011-04-19 02:31:31 
41 2011-04-19 02:32:53 
etc... 

我一直有麻烦搞清楚了这一点。

回答

0
select * from table as t1 
where (select count(*) from table as t2 
     where t1.id = t2.id and t2.date > t1.date) < 3 
order by id, date desc 
+0

谢谢,它的效果很好。 – radios4rabbits 2011-04-20 13:46:44

相关问题