获得2个最新项目,但来自2个不同的类别

时间:2011-02-10 14:56:42

标签: mysql

我是mysql / sql的新手,我有一个这样的表:

id | cat | datetime | ....... 10 more columns
10 | 20  | 10-12-31 00:00 | .....
64 | 12  | 10-10-25 10:00 | .....
39 | 12  | 10-11-21 08:00 | .....
21 | 20  | 10-12-30 20:00 | .....
95 | 21  | 10-09-16 00:00 | .....

查询的结果将是:

id | cat | datetime | ....... 10 more columns
10 | 20  | 10-12-31 00:00 | .....
39 | 12  | 10-11-21 08:00 | .....

我试过这个,但它不起作用(我知道它不会):

SELECT *, max(datetime) FROM table GROUP BY cat LIMIT 2

1 个答案:

答案 0 :(得分:1)

SELECT id, cat, datetime, ...
FROM `table`
  INNER JOIN (
    SELECT cat, MAX(datetime) AS mdate 
    FROM `table` 
    GROUP BY cat 
    ORDER BY mdate DESC
    LIMIT 2
  ) AS t
  ON `table`.cat = t.cat AND `table`.datetime = t.mdate;

可能有一种更有效的方法,但这会有效。