检索具有最大日期的每个组的行

Retrieve row for each group having the maximum date

我有这个MySQLtable:

ID     Number     Date
1      4          2015-05-30
2      4          2016-03-15
3      5          2016-04-01
4      5          2016-05-01

我想获得唯一的编号,但只获得日期最长的编号。结果必须只有:

ID     Number     Date
2      4          2016-03-15
4      5          2016-05-01

我试过了:

SELECT 
* 
FROM emp_events ee 
Date = (SELECT MAX(Date) FROM emp_events ee1 WHERE ee1.Number = ee.Number));

但没有得到所有想要的结果。

Try This

您必须 GROUP BY number 并在查询

中找到最大日期集 ORDER BY date ASC
SELECT e.* 
FROM(
    SELECT ee.*
    FROM `emp_events` AS ee
    ORDER BY ee.date ASC
) AS e
GROUP BY e.number

您可以通过 INNER JOIN

完成的一种方法
SELECT 
E.*
FROM emp_events E
INNER JOIN(
    SELECT 
        Number,
        MAX(Date) max_date
    FROM emp_events ee 
    GROUP BY Number
) AS t
ON E.Number = t.Number AND E.Date = t.max_date

另一种方法是使用 IN:

SELECT 
E.*
FROM emp_events E
WHERE (E.Number,E.Date) IN 
(
    SELECT 
        Number,
        MAX(Date) max_date
    FROM emp_events ee 
    GROUP BY Number
)