Cái này có thể giải quyết vấn đề của bạn:
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
;
Nó có thể không nhanh như những câu trả lời khác, nhưng là một phiên bản khác ... hãy thử xem. Nếu bạn có Data3 trong bảng của bạn, bạn có thể sao chép / dán Data1 và chỉ cần thay đổi tất cả các tham chiếu của cột này thành cột mới.
Chỉ để giải thích cách hoạt động của điều này:group_concat hàm nối tất cả các giá trị không phải null của một cột bằng dấu phân tách (, theo mặc định). Bạn có thể sắp xếp thứ tự cột trước khi nối. Nó hoạt động giống như một hàm cửa sổ trong Oracle, Postgre và những người khác ... substring_index chỉ nhận giá trị được nối đầu tiên, vì danh sách theo thứ tự thời gian giảm dần.