2015-07-16 3 views
0

У меня есть таблица с данными с разных устройств. Каждое устройство имеет идентификатор. Оператор insert выполняется каждый раз при изменении состояния устройства.MySQL, выбрав последние запросы с заданным идентификатором

Я хочу выбрать последние записи всех устройств.

Я использую этот код:

SELECT device_id, entry_id, data, entry_date 
      FROM some_table 
      group by device_id 
      order by device_id asc, entry_date desc; 

но он возвращает мне первые записи для каждого устройства, а не в последнюю очередь.

Вы можете мне помочь?

ответ

0

Попробуйте

SELECT t1.device_id, t1.entry_id, t1.data, t1.entry_date 
      FROM some_table as t1 inner join 
(
select device_id,max(entry_date) as entry_date from some_table 
group by device_id 
) as t2 on t1.device_id=t2.device_id and t1.entry_date=t2.entry_date 
+0

я получаю сообщение об ошибке: «Код ошибки: 1052. Колонки„device_id“в списке полого неоднозначный» – user2515973

+0

Вы уверены? Вы не получите эту ошибку. Вы что-то изменили? – Madhivanan

+0

Я только добавил больше столбцов в первый оператор select. Это не должно иметь никакого влияния. – user2515973

0

упорядочение в зависимости от последовательности каждого заказа на поле. Так что если вы хотите получить заказ первого по дате, изменить последовательность упорядочения:

SELECT device_id, entry_id, data, entry_date 
      FROM some_table 
      group by device_id 
      order by entry_date desc,device_id asc 
+0

Это не поможет. При использовании порядка, запрос уже сгруппировал записи ... взяв первые, а не последние. – user2515973

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