Това може да реши проблема ви:
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
;
Може да не е толкова бърз, колкото другите отговори, но е друга версия... опитайте. Ако имате Data3
колона във вашата таблица, можете да копирате/поставите Data1
колона и просто променете всички препратки на тази колона към новата.
Само за да обясня как работи това:group_concat
функцията обединява всички ненулеви стойности на колона с разделител (,
по подразбиране). Можете да поръчате колоната преди конкатенацията. Работи малко като прозоречна функция в Oracle, Postgre и други... substring_index
просто получава първата свързана стойност, тъй като списъкът е в низходящ ред по време.