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.