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

Holen Sie sich das neueste Datum aus gruppierten MySQL-Daten

Suchen Sie nach dem maximalen Datum für jedes Modell?

SELECT model, max(date) FROM doc
GROUP BY model

Wenn Sie nach allen Modellen suchen, die dem maximalen Datum der gesamten Tabelle entsprechen...

SELECT model, date FROM doc
WHERE date IN (SELECT max(date) FROM doc)

[--- Hinzugefügt ---]

Für diejenigen, die Details von jedem Datensatz anzeigen möchten, der dem letzten Datum innerhalb jeder Modellgruppe entspricht (keine zusammenfassenden Daten, wie im OP gefordert):

SELECT d.model, d.date, d.color, d.etc FROM doc d
WHERE d.date IN (SELECT max(d2.date) FROM doc d2 WHERE d2.model=d.model)

MySQL 8.0 und neuer unterstützt den OVER -Klausel, die bei größeren Datensätzen etwas schneller zu denselben Ergebnissen führt.

SELECT model, date, color, etc FROM (SELECT model, date, color, etc, 
  max(date) OVER (PARTITION BY model) max_date FROM doc) predoc 
WHERE date=max_date;