Celui-ci peut résoudre votre problème :
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
;
Ce n'est peut-être pas aussi rapide que d'autres réponses, mais c'est une autre version ... essayez-le. Si vous avez un Data3
colonne de votre tableau, vous pouvez copier/coller les Data1
colonne et remplacez simplement toutes les références de cette colonne par la nouvelle.
Juste pour expliquer comment cela fonctionne :le group_concat
la fonction concatène toutes les valeurs non nulles d'une colonne avec un séparateur (,
par défaut). Vous pouvez ordonner la colonne avant la concaténation. Cela fonctionne un peu comme une fonction de fenêtre dans Oracle, Postgre et autres... Le substring_index
obtient juste la première valeur concaténée, car la liste est dans un ordre décroissant de temps.