Mysql
 sql >> Base de données >  >> RDS >> Mysql

Regrouper par utilisateur et afficher la dernière version de MYSQL ne fonctionne pas

Comme mentionné dans les commentaires de Réponse de Robin , cette approche n'est pas fiable car MySQL ne garantit pas qu'il renverra toujours le statut le plus récent de chaque groupe. Vous devez plutôt joindre votre table avec une sous-requête qui sélectionne le statut le plus récent (basé sur 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

Notez que si un utilisateur a plusieurs mises à jour de statut avec le même addedDate , le serveur les renverra tous (alors que la requête de Robin en renverrait une indéterminée) ; si vous avez besoin de contrôler une telle situation, vous devrez définir comment déterminer quelle mise à jour de statut doit être sélectionnée.