Mysql
 sql >> Database >  >> RDS >> Mysql

MySQL recupera l'ultimo record per il gruppo

GROUP BY è concepito per essere utilizzato con funzioni di aggregazione, altrimenti seleziona arbitrariamente una riga per gruppo. La tua soluzione (sopra e nella tua risposta personale) funziona perché MySQL sembra mantenere la prima riga di ogni gruppo, ma non hai la certezza che ciò accadrà sempre.

Puoi ottenere la data dell'ultimo commento per ogni post_id così.

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

Usalo per selezionare l'ultimo commento:

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