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

Få den seneste dato fra grupperede MySQL-data

Leder du efter den maksimale dato for hver model?

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

Hvis du leder efter alle modeller, der matcher den maksimale dato for hele bordet...

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

[--- Tilføjet ---]

For dem, der ønsker at vise detaljer fra hver post, der matcher den seneste dato inden for hver modelgruppe (ikke oversigtsdata, som anmodet om i OP):

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 og nyere understøtter OVER klausul, hvilket giver de samme resultater lidt hurtigere for større datasæt.

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;


  1. OPRET Oracle-procedure

  2. Konverter 'datetime offset' til 'datetime' i SQL Server (T-SQL-eksempler)

  3. Oracle Unicode-spooling

  4. Skinner:Ingen forbindelsespulje til ActiveRecord::Base