Я пытаюсь создать запрос в таблице, содержащей около 500 000 записей и около 50 или 60 столбцов. Мне нужно собрать эти записи в группы и выбрать максимальную запись в каждой группе.
Чтобы упростить задачу, у меня есть таблица следующим образом
+----+-------------+----------+--------+
| id | external_id | group_id | mypath |
+----+-------------+----------+--------+
| 1 | 1003 | 1 | a |
| 2 | 1004 | 2 | b |
| 3 | 1005 | 2 | c |
+----+-------------+----------+--------+
Простая группа:
select * from temp GROUP BY group_id
который возвращает
+----+-------------+----------+--------+
| id | external_id | group_id | mypath |
+----+-------------+----------+--------+
| 1 | 1003 | 1 | a |
| 2 | 1004 | 2 | b |
+----+-------------+----------+--------+
Приятно, но не то, что я хочу. То, что я хочу, это вся запись для max enternal_id в каждой группе. Другими словами
+----+-------------+----------+--------+
| id | external_id | group_id | mypath |
+----+-------------+----------+--------+
| 1 | 1003 | 1 | a |
| 3 | 1005 | 2 | c |
+----+-------------+----------+--------+
Каким-то образом я хочу разместить здесь инструкцию max (external_id), чтобы отфильтровать то, что нужно, но пока все мои расследования не удались. Некоторые рекомендации будут оценены. Важно, чтобы при возврате max (external_id), когда вся запись выбрана, поскольку столбец пути отличается.