Originariamente inviato da piero.mac
group by e distinct prendono il primo record che soddisfa la richiesta. quindi e' casuale il record estratto con group by/distinct.

dovresti fare qualcosa del genere:
codice:
SELECT * 
FROM 
    (select max(id) as id1 from articoli
     group by categoria) as tab1
left join articoli as tab2 ON tab1.id1 = tab2.id
ovviamente con un versione mysql >= 4.1


mitico

edit:
giusto per curiosità e per imparare ho seguito il consiglio che hai dato ma facendo una prova eliminando la parte join

in pratica ho fatto

codice:
SELECT max( id ) AS id1, cat
FROM `prova` 
GROUP BY cat
ovviamente il campo cat è l'equivalente di categoria
ora. il risultato che ottengo è quello di avere il massimo valore dell'id in base alla categoria.
da quanto ho capito è quello che chiedeva l'utente che ha aperto il 3d.
ora mi chiedo...perchè hai fatto il join?