Используйте ORDER BY и LIMIT.
Тогда это просто:
SELECT field1, updated_date
FROM mytable
ORDER BY updated_date DESC
LIMIT 1;
Если запрос много нужен, вы можете попробовать эту альтернативу:
SELECT t1.field1, t1.updated_date
FROM mytable t1
LEFT JOIN mytable t2
AND t2.updated_date > t1.updated_date
WHERE t2.field1 IS NULL;
Краткое объяснение:
Для каждой строки, дайте мне любые строки с более свежим updated_date
.
Но (предложение WHERE) возьмите только строку с более новым updated_date
.
Этот метод иногда называется самоисключающим соединением.
Это промежуточный результат (без предложения WHERE и добавления t2.*
в список SELECT):
ta1 2012-03-11 11:05:15 ta2 2012-03-11 11:05:32
ta1 2012-03-11 11:05:15 ta3 2012-03-11 11:05:56
ta2 2012-03-11 11:05:32 ta3 2012-03-11 11:05:56
ta3 2012-03-11 11:05:56 null null