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

MySQL récupère le dernier enregistrement pour le groupe

GROUP BY est destiné à être utilisé avec des fonctions d'agrégation, sinon il sélectionne arbitrairement une ligne par groupe. Votre solution (ci-dessus et dans votre auto-réponse) fonctionne car MySQL semble conserver la première ligne de chaque groupe, mais vous n'êtes pas assuré que cela se produira toujours.

Vous pouvez obtenir la date du dernier commentaire pour chaque post_id comme ça.

select post_id, MAX(datetime) as latest from post_comments group by post_id

Utilisez-le pour sélectionner le dernier commentaire :

SELECT t1.* FROM post_comments AS t1
JOIN (
    SELECT post_id, MAX(datetime) AS latest FROM post_comments GROUP BY post_id
) AS t2
ON t1.post_id = t2.post_id AND t1.datetime = t2.latest