Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

MySQL selecionando registro máximo no grupo por


Muita informação em http://www.xaprb.com/blog/2006/12/07/how-to-select-the-firstleastmax-row-per-group-in-sql/

Este sempre foi um problema irritante no MySQL. Existem maneiras de contornar isso, como concatenar vários campos juntos (começando com external_id) e, em seguida, selecionar o MAX() disso e, em seguida, dividi-lo novamente.

Eu sugiro que você use uma tabela derivada. A primeira tabela (t1) é derivada de uma consulta simples na qual você identifica o MAX(external_id) , então você se junta a isso para obter o restante dos dados.

ISSO É APENAS SE external_id É Ú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 ...