Wie in den Kommentaren zu Robins Antwort
erwähnt , ist dieser Ansatz unzuverlässig, da MySQL nicht garantiert, dass immer der neueste Status von jeder Gruppe zurückgegeben wird. Sie müssen Ihre Tabelle stattdessen mit einer Unterabfrage verknüpfen, die den neuesten Status auswählt (basierend auf addedDate
).
SELECT *
FROM status
NATURAL JOIN (
SELECT userID, MAX(addedDate) as addedDate
FROM status
GROUP BY userID
) AS mostRecent
ORDER BY addedDate DESC
LIMIT 10
Beachten Sie, dass ein Benutzer mehrere Statusaktualisierungen mit demselben addedDate
hat , wird der Server alle zurückgeben (wohingegen Robins Abfrage eine unbestimmte zurückgeben würde); Wenn Sie eine solche Situation kontrollieren müssen, müssen Sie definieren, wie bestimmt wird, welche dieser Statusaktualisierungen ausgewählt werden sollen.