Наличие столбца ID
, который не является уникальным, звучит «неожиданно», но этот должен получить ожидаемые строки:
SELECT t.id, t.timestamp, MAX( t.marker ) marker,
t2.lat, t2.lng
FROM table t
JOIN (
SELECT id, MAX(timestamp) ts
FROM table
GROUP BY id
) tx ON ( tx.id = t.id AND tx.ts = t.timestamp )
JOIN t2 ON ( t2.id = tx.id )
GROUP BY t.id, t.timestamp
Вторая группа гарантирует, что вы получите только одну строку, если есть еще записи для тех же id
и timestamp
.
Обновление : отредактированный запрос на присоединение t2
.
Используйте LEFT JOIN
, если в t1
есть id
s, которых нет в t2
. lat
и lng
будут тогда NULL
для этих строк.