Mysql
 sql >> Base de données >  >> RDS >> Mysql

MySQL sélectionne l'enregistrement maximum dans le groupe par

Beaucoup d'informations sur http://www.xaprb.com/blog/2006/12/07/how-to-select-the-firstleastmax-row-per-group-in-sql/

Cela a toujours été un problème ennuyeux dans MySQL. Il y a eu des façons de contourner cela, comme concaténer plusieurs champs ensemble (en commençant par external_id), puis sélectionner le MAX() de celui-ci, puis le décomposer.

Je vous suggère d'utiliser une table dérivée. La première table (t1) est dérivée d'une requête simple où vous identifiez le MAX(external_id) , puis vous rejoignez à partir de cela pour obtenir le reste des données.

CECI EST UNIQUEMENT SI external_id EST UNIQUE

SELECT 
   t1.group_id, some_table.id, some_table.mypath
FROM 
   (
      SELECT group_id, MAX(external_id) AS external_id
      FROM some_table
      GROUP BY group_id
   ) as t1
INNER JOIN 
   sometable ON t1.external_id = sometable.external_id
WHERE ...