sql >> Base de Datos >  >> RDS >> Mysql

MySQL seleccionando registro máximo en grupo por

Mucha información en http://www.xaprb.com/blog/2006/12/07/how-to-select-the-firstleastmax-row-per-group-in-sql/

Esto siempre ha sido un problema molesto en MySQL. Ha habido formas de evitarlo, como concatenar varios campos juntos (comenzando con external_id), y luego seleccionar el MAX() de eso, y luego dividirlo nuevamente.

Le sugiero que use una tabla derivada. La primera tabla (t1) se deriva de una consulta simple en la que identifica el MAX(external_id) , luego te unes desde ahí para obtener el resto de los datos.

ESTO ES SOLO SI external_id ES ÚNICO

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 ...