Вот пример таблицы:
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 в один?
Любая помощь была оценена.
Крис
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