私は、モデル、モデル、年、および他のいくつかの列を持つ車を記述する表を持っているとします。類似行フィルタリングによるグループ化
これからは、最新の1年ごとに各メイクとモデルを1行ずつ取りたいと思います。
または別の方法で入力してください。各行は、makeとモデルとの一意の組み合わせを、対応する行からの最大値の別のデータと組み合わせて使用します。
標準のSQLソリューションは素晴らしいでしょう。
私は、モデル、モデル、年、および他のいくつかの列を持つ車を記述する表を持っているとします。類似行フィルタリングによるグループ化
これからは、最新の1年ごとに各メイクとモデルを1行ずつ取りたいと思います。
または別の方法で入力してください。各行は、makeとモデルとの一意の組み合わせを、対応する行からの最大値の別のデータと組み合わせて使用します。
標準の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
主な注意点は、今年は、多くの場合、予約語(関数名)と脱出するための手段であるということです予約語はplatormによって異なるこれを修正するには、年の列の名前をModelYearに変更します。
ありがとうございます。私はこの解決策をとった。 – Bloodboiler