Mysql
 sql >> Database >  >> RDS >> Mysql

MySQL selezionando il record massimo nel gruppo per

Molte informazioni su http://www.xaprb.com/blog/2006/12/07/how-to-select-the-firstleastmax-row-per-group-in-sql/

Questo è sempre stato un problema fastidioso in MySQL. Ci sono stati modi per aggirarlo, come concatenare diversi campi insieme (iniziando con external_id), quindi selezionare il MAX() di quello, e poi dividerlo di nuovo.

Ti suggerisco di utilizzare una tabella derivata. La prima tabella (t1) è derivata da una semplice query in cui si identifica il MAX(external_id) , quindi ti unisci a quello per ottenere il resto dei dati.

QUESTO È SOLO SE external_id È UNICO

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