Как выбрать последний из трех типов значений в базе данных MySQL?

0

Вот пример таблицы:

ID  time   data   type  
0   0100   xyz    0  
1   0200   xyz    1  
2   0300   xyz    1  
3   0400   xyz    2  
4   0200   xyz    0  
5   0500   xyz    2  
6   0300   xyz    0  

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

Я бы хотел, чтобы результат SELECT был:

ID  time   data   type  
5   0500   xyz    2  
2   0300   xyz    1  
6   0300   xyz    0  

И так возвращается последний из каждого типа.

Я могу выполнить вышеуказанное, используя три оператора SELECT следующим образом:

SELECT time, data, type FROM table WHERE type=0 ORDER BY time DESC LIMIT 1
SELECT time, data, type FROM table WHERE type=1 ORDER BY time DESC LIMIT 1
SELECT time, data, type FROM table WHERE type=2 ORDER BY time DESC LIMIT 1

Есть ли способ объединить вышеуказанные три оператора SELECT в один?

Любая помощь была оценена.

Крис

  • 0
    Вы можете объединить их в один запрос, но это будет просто увеличенная версия всех трех запросов вместе. То, что у вас есть, вероятно, лучше всего.
Теги:
select

1 ответ

1
Лучший ответ
select m.ID, m.time, m.data, m.type
from (
    select type, max(time) as MaxTime
    from MyTable
    group by type
) mm
inner join MyTable on mm.type = m.type 
    and mm.MaxTime = m.time
  • 0
    Спасибо за вклад! Я попробую оба.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню