2016-08-15 17 views
1

每組我有這樣的MySQL表:檢索行具有最大日

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

我想唯一的號碼,但只得到那些具有最高的日期。結果必須得到ONLY:

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)); 

,但沒有得到所有想要的結果。

+0

這個問題被問及無盡的回答。有時候它的答案是正確的,所以我猜這只是運氣不好,以下提供的答案都不夠。 – Strawberry

回答

1

的一種方式,你可以通過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 
) 
-2

嘗試這個

你必須GROUP BY number也找到最大日期查詢設置ORDER BY date ASC

SELECT * 
FROM `emp_events` AS ee 
GROUP BY `number` 
ORDER BY `date` ASC 
+0

如果您未在您的選擇中傳遞聚合函數,則您將獲得按順序的混合結果。 – FrankerZ