Asıl | Tüm Mysql Storage Engine’ler için Full Text Search »
GROUP BY’dan önce ORDER nasıl yapılır
Yazar admin | Aralık 15, 2007
Bugün, bir SQL ile uğrasırken karşıma şöyle bişey çıktı. Bir tablo düşünü ki içerisinde,
id, baslik, tarih, group_id alanaları içersin ve bu tabl icinde group_id leri aynı olan ya da olmayan bir sürü kayıt olsun.
Bu kayıtlardan, farklı group_id lere sahip kayıtlara ihtiyacım var ama bu ayıtlar tarih olarak en güncel olanları istiyorum.
Şöyle bir SQL ne yazık ki işe yaramadı.
SELECT * FROM tablom GROUP BY group_id ORDER BY tarih DESC
bu ne yazık ki istediğim sonucu vermedi, zira Mysql önce grupladı sonra sıraladı ve gruplarken sıralamayı sona bıraktığı için en güncel kayıt sıralamaya dahil olamadı.
Bense, önce güncelden eskiye sıralamak sonra gruplamak istiyordum. Bu sorunu şöyle bir SQL ile çözdüm.
SELECT * FROM (SELECT * FROM tablo ORDER BY tarih DESC) GROUP BY group_id;
işte bu SQL sorgusu istediğim sonucu verdi.
Not: Böyle bir sorgunun SQL mantığı içerisinde performans kriterleri göz ününe alındığında ne kadar mantıklı olduğunu açıkçası bilmiyorum. Ama bu yazıma bir işaret koyuyorum ve bu konu hakkında test ve araştırma yaptığımda yazımı güncellemei ümit ediyorum:)
Kategori: MySQL |
Yorumlar
Yorum yapabilmek için giriş yapmalısınız.