1

假设我有一个表格来描述汽车的品牌、型号、年份和其他一些列。

从那以后,我想得到最近一年的每个品牌和型号的一整排。

或者换一种说法。每一行将具有唯一的品牌和型号组合,以及来自相应行的其他数据,其中年度值最大。

标准的 SQL 解决方案会很棒。

4

3 回答 3

1

MySQL解决方案:

SELECT * FROM cars GROUP NY CONCAT(make, "-", model) ORDER BY year DESC;
于 2009-03-03T17:55:00.507 回答
1
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
             );
于 2009-03-03T17:55:20.147 回答
1

这应该在任何地方都有效:

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

主要警告是 Year 通常是保留字(函数名),转义保留字的方法因平台而异。要解决此问题,请将年份列重命名为 ModelYear。

于 2009-03-03T17:57:38.033 回答