In realta' group by prende il primo record che trova fisicamente nel db. Potrebbe essere qualunque. Se casualmente prende l'ultimo forse e' perche' hai cancellato dei record e gli ultimi inseriti hanno occupato il posto di quelli cancellati prima....
dovresti fare una subquery... dovrebbe essere cosi':
ovviamente se serve l'ultimo metterai MAX() al posto di MIN()codice:SELECT * FROM tabella WHERE id = ANY (SELECT MIN(id) FROM tabella group by relazione)