Originariamente inviato da luca200
SELECT col1, MAX(CONCAT(col3,col2)) from tabella
group by col1
si, l'avevo visto, ma siccome chiede espressamente l'id 3 e 5 forse per altri contenuti del record (contenuti non dichiarati), il group by rende il primo id che trova corrispondere con col1 e non il record 3 e 5.

Se gli basta utente e data va bene. E' la struttura della tabella che non va bene per quello che deve fare. Basterebbe inserire la data completa in un campo date per avere:

codice:
select *
from (select max(data) as val
       from tabella 
       group by col1) as tab1
inner join tabella as tab2 
       ON tab1.val = tab2.data
e' per questo che ho scritto "soluzione banale" omettendo "ad un problema strutturale"