Questo potrebbe risolvere il tuo 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
;
Potrebbe non essere veloce come altre risposte, ma è un'altra versione... provalo. Se hai un Data3 colonna nella tabella, puoi copiare/incollare i Data1 colonna e cambia semplicemente tutti i riferimenti di questa colonna con quella nuova.
Giusto per spiegare come funziona:il group_concat La funzione concatena tutti i valori non nulli di una colonna con un separatore (, per impostazione predefinita). È possibile ordinare la colonna prima della concatenazione. Funziona un po' come una funzione finestra in Oracle, Postgre e altri... Il substring_index sta solo ottenendo il primo valore concatenato, poiché l'elenco è in ordine di tempo decrescente.