Frage

Lets sagen, ich habe eine Tabelle mit Autos mit Marke, Modell, Baujahr und einigen anderen Spalten.

Von dieser, ich mochte eine ganze Reihe von jedem bekommen machen und dem Modell für letztes Jahr.

oder es auf eine andere Weise zu setzen. Jede Zeile würde einzigartige Kombination von Marke und das Modell mit anderen Daten der entsprechenden Zeile mit dem größten Wert des Jahres.

Standard SQL Lösung wäre toll.

War es hilfreich?

Lösung

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
             );

Andere Tipps

MySQL Lösung:

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

Das sollte funktionieren fast überall:

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

Der Haupt Nachteil ist, dass Jahr ist oft ein reserviertes Wort (Funktionsname) und die Mittel für die Flucht reservierte Wörter ändern sich je nach platorm. Um das zu beheben, benennen Sie die Spalte Jahr zu so etwas wie Modelyear.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top