sql >> Base de Datos >  >> RDS >> Mysql

MySQL recupera el último registro para el grupo

GROUP BY está diseñado para usarse con funciones de agregación; de lo contrario, selecciona arbitrariamente una fila por grupo. Su solución (arriba y en su auto-respuesta) funciona porque MySQL parece mantener la primera fila de cada grupo, pero no tiene la garantía de que esto suceda siempre.

Puede obtener la fecha del último comentario para cada post_id así.

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

Úselo para seleccionar el último comentario:

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