SELECT max(filename), max(title) FROM tabela GROUP BY gal_id ORDER BY img_id DESC LIMIT 10
Coldpeer - to nie będzie działało dobrze, bo bierzesz różne kolumny z różnych rekordów.
max(filename) może dotyczyć innego rekordu niż max(title). Zresztą w tym zastosowaniu to wyrażenie w ogóle nie ma sensu.
// mhm, dla takiego zestawu jak podał wyżej autor to wiem, nawet dałem dopisek ;) Co nie zmienia faktu, że nie jest to elegancko- Cold
Proponuje coś takiego:
SELECT * FROM tabela t1 WHERE img_id IN (SELECT img_id FROM tabela t2 WHERE t1.gal_id = t2.gal_id ORDER BY t2.img_id DESC LIMIT 10);
W ORDER_BY możesz sobie wstawić oczywiście jakąś datę albo co.
To zwraca maksimum po 10 najnowszysch zdjęć z każdej galerii.
Natomiast jeśli chcesz po 1 najnowszym zdjęciu z 10 galerii, to wtedy:
SELECT * FROM tabela t1 WHERE img_id IN (SELECT img_id FROM tabela t2 WHERE t1.gal_id = t2.gal_id ORDER BY t2.img_id DESC LIMIT 1) LIMIT 10;
Disklejmer: Nie wiem jak MySQL, ale są RDBMSy, które nie pozwolą na LIMIT i ORDER BY w podzapytaniu, bo nie da się tego z automatu zamienić na klasyczny JOIN. No cóż, musisz sprawdzić. Bardzo prawdopodobne, że to zapytanie będzie się wykonywało dosyć wolno.