Ten może rozwiązać Twój problem:
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
;
Może nie jest tak szybki jak inne odpowiedzi, ale to inna wersja... spróbuj. Jeśli masz Data3
kolumny w tabeli, możesz skopiować/wkleić Data1
i po prostu zmień wszystkie odniesienia z tej kolumny na nowe.
Aby wyjaśnić, jak to działa:group_concat
funkcja łączy wszystkie niezerowe wartości kolumny z separatorem (,
domyślnie). Kolumnę można zamówić przed konkatenacją. Działa trochę jak funkcja okna w Oracle, Postgre i innych... substring_index
po prostu otrzymuje pierwszą połączoną wartość, ponieważ lista jest ułożona w porządku malejącym w czasie.