Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Nach Benutzer gruppieren und Neueste anzeigen in MYSQL funktioniert nicht

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.