Hai bisogno di una clausola GROUP BY o di una query più complessa.
SELECT field1, MAX(updated_date)
FROM mytable
GROUP BY field1
Per i dati di esempio, verranno restituite 3 righe.
Più probabilmente, vuoi:
SELECT t1.field1, t3.max_date
FROM mytable AS t1
JOIN (SELECT MAX(t2.updated_date) AS max_date
FROM mytable AS t2
) AS t3
ON t1.updated_date = t3.max_date;
Per i dati di esempio, questo restituirà 1 riga:
ta3 2012-03-11 11:05:56
Dei principali DBMS, solo MySQL ti consente di omettere la clausola GROUP BY quando hai una combinazione di aggregati e colonne non aggregate nell'elenco di selezione. Lo standard SQL richiede la clausola GROUP BY ed è necessario elencare tutte le colonne non aggregate al suo interno. A volte, in MySQL, l'omissione della clausola GROUP BY produce la risposta che desideri; ogni tanto, però, riesce a dare una risposta inaspettata.