سؤال

ودعونا نقول لدي جدول وصف السيارات مع والطراز والسنة وبعض الأعمدة الأخرى.

ومنذ ذلك، أود الحصول على صف واحد كامل من كل وتقديم النموذج لآخر سنة.

وأو وضعه بطريقة أخرى. أن كل صف لديها مزيج فريد من تقديم نموذج مع بيانات أخرى من الصف المقابل مع أكبر قيمة من السنة.

وحل 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.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top