MySQL sélectionnant l'enregistrement max dans le groupe par

Je suis en train de créer une requête dans une table qui a environ 500 000 enregistrements et quelques 50 ou 60 colonnes. Ce dont j'ai besoin est de rassembler ces enregistrements dans des groupes et sélectionnez le max d'enregistrement dans chaque groupe.

Pour simplifier le problème, j'ai un tableau comme suit

+----+-------------+----------+--------+
| id | external_id | group_id | mypath |
+----+-------------+----------+--------+
|  1 |        1003 |        1 | a      | 
|  2 |        1004 |        2 | b      | 
|  3 |        1005 |        2 | c      | 
+----+-------------+----------+--------+

Le groupe simple par est comme suit

select * from temp GROUP BY group_id

qui renvoie

+----+-------------+----------+--------+
| id | external_id | group_id | mypath |
+----+-------------+----------+--------+
|  1 |        1003 |        1 | a      | 
|  2 |        1004 |        2 | b      | 
+----+-------------+----------+--------+

Sympa, mais pas ce que je veux. Ce que je veux, c'est la totalité de l'enregistrement pour max enternal_id dans chaque groupe. En d'autres termes

+----+-------------+----------+--------+
| id | external_id | group_id | mypath |
+----+-------------+----------+--------+
|  1 |        1003 |        1 | a      | 
|  3 |        1005 |        2 | c      | 
+----+-------------+----------+--------+

En quelque sorte, je suis à la recherche de mettre un max(external_id) déclaration ici pour filtrer ce qui est nécessaire, mais à ce jour, mon enquête a échoué. Quelques conseils seraient appréciés. Il est important que lors de la restitution de max(external_id) que l'ensemble du dossier est sélectionné comme la colonne chemin d'accès diffère.

source d'informationauteur user1715656