المجموعة عن طريق التصفية الصف مثل
سؤال
ودعونا نقول لدي جدول وصف السيارات مع والطراز والسنة وبعض الأعمدة الأخرى.
ومنذ ذلك، أود الحصول على صف واحد كامل من كل وتقديم النموذج لآخر سنة.
وأو وضعه بطريقة أخرى. أن كل صف لديها مزيج فريد من تقديم نموذج مع بيانات أخرى من الصف المقابل مع أكبر قيمة من السنة.
وحل 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
);
نصائح أخرى
والخلية الحل:
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.
لا تنتمي إلى StackOverflow