web-dev-qa-db-fra.com

Obtenir la dernière date des données MySQL groupées

J'ai les données suivantes dans ma base de données:

|NO | model | date     | 
+---+-------+----------+
|1  | bee   |2011-12-01|
|2  | bee   |2011-12-05|
|3  | bee   |2011-12-12|
|4  | tar   |2011-12-13|

Je souhaite connaître la dernière date de chaque groupe de modèles:

| model | date     | 
+-------+----------+
| bee   |2011-12-12|
| tar   |2011-12-13|

J'ai essayé:

SELECT model, date 
FROM doc
WHERE date ........????? //what is the next?
GROUP BY model
46
nunu

Cherchez-vous la date maximum pour chaque modèle?

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

Si vous recherchez tous les modèles correspondant à la date maximale de la table entière ...

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

Vous pouvez essayer d'utiliser max () dans la sous-requête, quelque chose comme ceci:

SELECT model, date  
FROM doc 
WHERE date in (SELECT MAX(date) from doc GROUP BY model);
12
gprathour

Sous-requête donnant des dates. Nous ne lions pas avec le modèle. Donc, la requête ci-dessous résout le problème.

S'il y a des dates en double/modèle peut être évité par la requête suivante.

select t.model, t.date
from doc t
inner join (select model, max(date) as MaxDate from doc  group by model)
tm on t.model = tm.model and t.date = tm.MaxDate
9

essaye ça:

SELECT model, date
FROM doc
WHERE date = (SELECT MAX(date)
FROM doc GROUP BY model LIMIT 0, 1)
GROUP BY model
0
Christopher Pelayo

L'utilisation de max (date) n'a pas résolu mon problème, car rien ne garantit que les autres colonnes proviendront de la même ligne que max (date). Au lieu de cela, celui-ci a résolu mon problème et trié le groupe par dans un ordre correct et les valeurs des autres colonnes sont de la même ligne que la date maximale est:

SELECT model, date 
FROM (SELECT * FROM doc ORDER BY date DESC) as sortedTable
GROUP BY model
0
Iman Sedighi