Este puede resolver su 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
;
Puede que no sea tan rápido como otras respuestas, pero es otra versión... pruébalo. Si tiene un Data3
columna en su tabla, puede copiar/pegar el Data1
columna y simplemente cambie todas las referencias de esta columna a la nueva.
Solo para explicar cómo funciona esto:el group_concat
La función concatena todos los valores no nulos de una columna con un separador (,
por defecto). Puede ordenar la columna antes de la concatenación. Funciona un poco como una función de ventana en Oracle, Postgre y otros... El substring_index
solo obtiene el primer valor concatenado, ya que la lista está en orden descendente de tiempo.