Получить строку для каждой группы, имеющей максимальную дату
У меня есть эта таблица MySQL:
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));
но не получить все желаемые результаты.
2 ответа
Решение
Один способ, которым вы можете достичь через 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
)
Попробуй это
Ты должен GROUP BY number
а также найти максимальный набор дат ORDER BY date ASC
в запросе
SELECT *
FROM `emp_events` AS ee
GROUP BY `number`
ORDER BY `date` ASC