Предположим, у меня есть таблица exection_records
, которая имеет данные:Как запросить строку с уникальным идентификатором с соответствующим максимальным значением?
+----+----------+---------------------+
| id | handle | finishedAt |
+----+----------+---------------------+
| 1 | task_foo | 2015-08-16 03:10:33 |
| 2 | task_foo | 2015-08-15 04:00:27 |
| 3 | task_foo | 2015-08-14 02:10:25 |
| 4 | task_bar | 2015-08-17 03:00:25 |
| 5 | task_bar | 2015-08-16 02:01:25 |
| 6 | task_bar | 2015-08-13 06:02:50 |
+----+----------+---------------------+
Теперь я хочу, чтобы получить строку, в которой finishedAt
на это в своей последней метки времени для каждой уникальной ручки, то есть:
+----+----------+---------------------+
| id | handle | finishedAt |
+----+----------+---------------------+
| 1 | task_foo | 2015-08-16 03:01:33 |
| 4 | task_bar | 2015-08-17 03:00:25 |
+----+----------+---------------------+
Я знаю, что в MySQL есть MAX
.
я мог бы получить самую последнюю запись для каждой задачи с помощью:
SELECT *,MAX(finishedAt) FROM db.execution_records where taskHandle = 'task_foo';
SELECT *,MAX(finishedAt) FROM db.execution_records where taskHandle = 'task_bar';
Но я не хочу выдавать несколько запросов, но один, и я не хочу называть ручки.
Как я могу выполнить свой запрос?
Возможный дубликат http://stackoverflow.com/questions/32059558/sql-how-to- select-a-row-having-a-column-with-max-value-group-by – k0pernikus
За исключением того, что это MySQL * (whic h не имеет 'ROW_NUMBER()') *, и этот вопрос - Oracle. – MatBailie