Question

Disons que j'ai un tableau décrivant les voitures avec la marque, le modèle, l'année et quelques autres colonnes.

À partir de là, j'aimerais obtenir une rangée complète de chaque marque et modèle pour la dernière année.

Ou pour le dire autrement. Chaque ligne aurait une combinaison unique de marque et de modèle avec d'autres données de la ligne correspondante avec la plus grande valeur de l'année.

Une solution SQL standard serait géniale.

Était-ce utile?

La solution

select t1.make, t1.model, t1.year, t1.other_cols
from table t1
where year = (select max(year) from table t2
              where t2.make = t1.make
              and t2.model = t1.model
             );

Autres conseils

Solution MySQL:

SELECT * FROM cars GROUP NY CONCAT(make, "-", model) ORDER BY year DESC;

Cela devrait fonctionner à peu près n'importe où:

SELECT c1.* 
FROM cars c1
INNER JOIN 
  (
     SELECT Make, Model, Max(Year) AS Year
     FROM cars
     GROUP BY Make, Model
  ) c2 ON c1.Make=c2.Make AND c1.Model=c2.Model, c1.Year=c2.Year

L’avertissement principal est que Year est souvent un mot réservé (nom de la fonction) et que le moyen utilisé pour échapper aux mots réservés varie d’une platforme à l’autre. Pour résoudre ce problème, renommez la colonne year en quelque chose comme ModelYear.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top