可以说我有一张表,描述了车型,车型,年份和其他栏目。通过类似行过滤的组
从那以后,我想在最近的一年里获得每个品牌和型号的一整行。
或者换一种方式。每行将具有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