2010-09-07 1 views
1

У меня есть таблица MySQL с записями, как это:Как фильтровать дублированные строки id mysql и извлекать одну из них с последней меткой времени?

id name  value date 
1 results1 1000000 2010-06-02 01:31:12 
2 results2 600000 2010-09-03 05:42:54 
1 results1 1200000 2010-09-06 02:14:36 

Как ВЫБРАТЬ все и фильтровать несколько строк, которые имеют один и тот же идентификатор, выбирая только один с последней датой?

Типовой тип столбца «дата» - это отметка времени, и по умолчанию она имеет CURRENT_TIMESTAMP.

+0

Это звучит как медленно изменяющиеся размеры. Вы можете просмотреть ответы на этот вопрос: http://stackoverflow.com/questions/125877/versioning-database-persisted-objects-how-would-you –

ответ

1
select m.* 
from (
    select id, max(date) as MaxDate 
    from MyTable 
    group by id 
) mm 
inner join MyTable m on mm.id = m.id and mm.MaxDate = m.Date 
+0

+1 - разница в 25 секунд, sheesh ... –

+0

I не может заставить запрос работать, мне нужно редактировать что-нибудь еще, кроме MyTable? – jarkam

+0

Я получил его, добавив несколько «AS», но он извлекает только одну строку (ту, которая имеет наивысшую дату), даже если другие строки имеют другое имя с одинаковым идентификатором. Как я могу получить все? – jarkam

 Смежные вопросы

  • Нет связанных вопросов^_^