これはあなたの問題を解決するかもしれません:
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 関数は、列のnull以外のすべての値を区切り文字(,)で連結します デフォルト)。連結の前に列を注文できます。 Oracle、Postgreなどのウィンドウ関数のように機能します... substring_index リストは時間の降順であるため、は最初の連結値を取得しているだけです。