これはあなたの問題を解決するかもしれません:
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
リストは時間の降順であるため、は最初の連結値を取得しているだけです。