Este pode resolver seu problema:
select
record_id,
substring_index(group_concat(Data1 order by Time desc), ',', 1) Data1,
substring_index(group_concat(Data2 order by Time desc), ',', 1) Data2,
substring_index(group_concat(Time order by Time desc), ',', 1) Time
from records
group by record_id
;
Pode não ser tão rápido quanto outras respostas, mas é outra versão... experimente. Se você tiver um
Data3 coluna em sua tabela, você pode copiar/colar o Data1 coluna e apenas altere todas as referências desta coluna para a nova. Apenas para explicar como isso funciona:o
group_concat função concatena todos os valores não nulos de uma coluna com um separador (, por padrão). Você pode ordenar a coluna antes da concatenação. Funciona um pouco como uma função de janela no Oracle, Postgre e outros... O substring_index está apenas obtendo o primeiro valor concatenado, pois a lista está em ordem decrescente de tempo.