Tach!
Du musst dir also zuerst von jedem nur einen Datensatz holen:
Aber den jüngsten dieser Datensätze:
Jetzt hast du eine schöne Teilmenge deiner Datensätze, daraus sammelst du jetzt die gewünschten Daten heraus:
SELECT column
FROM table
WHERE timestamp
IN
(SELECT MAX(
timestamp
) FROMtable
GROUP BYname
)
Das gibt nur ein kleines Problem. Wenn die Timestamps nicht fein genug auflösen und zwei Einträge denselben Timestamp haben, der eine aber zu einer Gruppe gehört, die noch neuere Datensätze hat, dann kommen von der Gruppe zwei Datensätze in die Ergebnismenge.
Wenn man es richtig machen will und sich nicht auf die üblicherweise aber icht garantiert aufsteigend vergebenen Werte der IDs verlassen möchte, muss man den Gruppennamen und den Timestamp berücksichtigen. Dann kann man aber die Subquery nicht mehr ins WHERE nehmen, sondern ins FROM und muss joinen. Die Join-Bedingung muss beide Werte vergleichen.
dedlfix.