Dieser könnte Ihr Problem lösen:
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
;
Es ist vielleicht nicht so schnell wie andere Antworten, aber es ist eine andere Version ... probieren Sie es aus. Wenn Sie eine Data3
haben Spalte in Ihrer Tabelle können Sie die Data1
kopieren/einfügen Spalte und ändern Sie einfach alle Verweise dieser Spalte auf die neue.
Nur um zu erklären, wie das funktioniert:der group_concat
Funktion verkettet alle Nicht-Null-Werte einer Spalte mit einem Trennzeichen (,
standardmäßig). Sie können die Spalte vor der Verkettung anordnen. Es funktioniert ein bisschen wie eine Fensterfunktion in Oracle, Postgre und anderen ... Der substring_index
erhält nur den ersten verketteten Wert, da die Liste in absteigender Reihenfolge der Zeit ist.