Sie benötigen entweder eine GROUP BY-Klausel oder eine komplexere Abfrage.
SELECT field1, MAX(updated_date)
FROM mytable
GROUP BY field1
Für die Beispieldaten werden 3 Zeilen zurückgegeben.
Wahrscheinlicher ist, dass Sie Folgendes möchten:
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;
Für die Beispieldaten gibt dies 1 Zeile zurück:
ta3 2012-03-11 11:05:56
Von den großen DBMS erlaubt Ihnen nur MySQL, die GROUP BY-Klausel wegzulassen, wenn Sie eine Mischung aus aggregierten und nicht aggregierten Spalten in der Auswahlliste haben. Der SQL-Standard erfordert die GROUP BY-Klausel, und Sie müssen alle nicht aggregierten Spalten darin auflisten. Manchmal führt das Weglassen der GROUP BY-Klausel in MySQL zur gewünschten Antwort; oft gelingt es ihm jedoch, eine unerwartete Antwort zu geben.