Mysql
 sql >> Base de données >  >> RDS >> Mysql

Obtenez la dernière date à partir des données MySQL groupées

Vous cherchez la date max pour chaque modèle ?

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

Si vous cherchez tous les modèles correspondant à la date max de toute la table...

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

[--- Ajout ---]

Pour ceux qui souhaitent afficher les détails de chaque enregistrement correspondant à la dernière date de chaque groupe de modèles (et non des données récapitulatives, comme demandé dans l'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 et plus récent prend en charge le OVER clause, produisant les mêmes résultats un peu plus rapidement pour des ensembles de données plus volumineux.

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;