Mysql
 sql >> Datenbank >  >> RDS >> Mysql

MySQL wählt maximalen Datensatz in Gruppe nach aus

Viele Informationen unter http://www.xaprb.com/blog/2006/12/07/how-to-select-the-firstleastmax-row-per-group-in-sql/

Dies war schon immer ein ärgerliches Problem in MySQL. Es gab Möglichkeiten, dies zu umgehen, z. B. mehrere Felder miteinander zu verketten (beginnend mit external_id) und dann das MAX() davon auszuwählen und es dann wieder zu zerlegen.

Ich schlage vor, Sie verwenden eine abgeleitete Tabelle. Die erste Tabelle (t1) wird von einer einfachen Abfrage abgeleitet, bei der Sie MAX(external_id) identifizieren , dann treten Sie diesem bei, um den Rest der Daten zu erhalten.

DAS IST NUR WENN external_id IST EINZIGARTIG

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