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
Vous devez vous connecter pour publier un commentaire.
Beaucoup d'infos à http://www.xaprb.com/blog/2006/12/07/how-to-select-the-firstleastmax-row-per-group-in-sql/
Cela a toujours été une source de problème dans MySQL. Il y a eu des moyens autour d'elle, comme la concaténation de plusieurs champs (en commençant par external_id), puis en sélectionnant le MAX (), puis la rupture de ce retour à part.
Je vous suggère d'utiliser une table dérivée. Première table (t1) est dérivée à partir d'une simple requête permet d'identifier les
MAX(external_id)
alors vous joindre à partir de qu'obtenir le reste des données.CE N'EST QUE SI
external_id
EST UNIQUE