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.