2016-08-15 24 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 

もうを通じて達成することができますクエリにORDER BY date ASCを設定し検索してみてください方法は可能性があります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に有し、また最大日付が

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

selectに集約関数を渡さないと、order byの混合結果が得られます。 – FrankerZ

関連する問題