可以說我有一張表,描述了車型,車型,年份和其他欄目。通過類似行過濾的組
從那以後,我想在最近的一年裏獲得每個品牌和型號的一整行。
或者換一種方式。每行將具有make和model與來自具有最大年份值的對應行中的其他數據的唯一組合。
標準的SQL解決方案會很棒。
可以說我有一張表,描述了車型,車型,年份和其他欄目。通過類似行過濾的組
從那以後,我想在最近的一年裏獲得每個品牌和型號的一整行。
或者換一種方式。每行將具有make和model與來自具有最大年份值的對應行中的其他數據的唯一組合。
標準的SQL解決方案會很棒。
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
);
MySQL的解決方案:
SELECT * FROM cars GROUP NY CONCAT(make, "-", model) ORDER BY year DESC;
這應該工作的絕大多數地方:
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
主要告誡是年往往是一個保留字(函數名)和逃避的手段保留字因平臺而異。要解決該問題,請將年份列重命名爲類似於ModelYear的內容。
謝謝大家。我去了這個解決方案。 – Bloodboiler 2009-03-04 17:16:10