Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

MySQL recupera o registro mais recente para o grupo


GROUP BY destina-se a ser usado com funções de agregação, caso contrário, seleciona arbitrariamente uma linha por grupo. Sua solução (acima e em sua auto-resposta) funciona porque o MySQL parece estar mantendo a primeira linha de cada grupo, mas você não tem garantia de que isso sempre acontecerá.

Você pode obter a data do último comentário para cada post_id assim.
select post_id, MAX(datetime) as latest from post_comments group by post_id

Use-o para selecionar o comentário mais recente:
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