如何选择每列1和每列2的最新条目?

Gri*_*uru 2 mysql sql

我对mysql很新,需要一个我无法弄清楚的查询.给出一个像这样的表格:

emp  cat  date        amt   cum
44   e1   2009-01-01  1     1
44   e2   2009-01-02  2     2
44   e1   2009-01-03  3     4
44   e1   2009-01-07  5     9
44   e7   2009-01-04  5     5
44   e2   2009-01-04  3     5
44   e7   2009-01-05  1     6
55   e7   2009-01-02  2     2
55   e1   2009-01-05  4     4
55   e7   2009-01-03  4     6
Run Code Online (Sandbox Code Playgroud)

我需要根据'emp'和每'cat'选择最新的日期交易.上表会产生类似于:

emp  cat  date        amt   cum
44   e1   2009-01-07  5     9
44   e2   2009-01-04  3     5
44   e7   2009-01-05  1     6
55   e1   2009-01-05  4     4
55   e7   2009-01-03  4     6 
Run Code Online (Sandbox Code Playgroud)

我尝试过类似的东西:

select * from orders where emp=44 and category='e1' order by date desc limit 1;
select * from orders where emp=44 and category='e2' order by date desc limit 1;
Run Code Online (Sandbox Code Playgroud)

....

但这感觉不对.谁能指出我正确的方向?

Pow*_*ord 5

应该有效,但我还没有测试过.

SELECT orders.* FROM orders
INNER JOIN (
  SELECT emp, cat, MAX(date) date
    FROM orders
    GROUP BY emp, cat
  ) criteria USING (emp, cat, date)
Run Code Online (Sandbox Code Playgroud)

基本上,这使用子查询来获取每个emp和cat的最新条目,然后将其连接到原始表以获取该订单的所有数据(因为您不能GROUP BY amt和cum).