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

php mysql Group By para obtener el último registro, no el primer registro

Si selecciona atributos que no se utilizan en la cláusula de grupo y que no son agregados, el resultado no se especifica. Es decir no sabe de qué filas se seleccionan los otros atributos. (El estándar sql no permite este tipo de consultas, pero MySQL es más relajado).

La consulta debe escribirse, p. como

SELECT post_id, forum_id, topic_id
FROM posts p
WHERE post_time =
  (SELECT max(post_time) FROM posts p2
   WHERE p2.topic_id = p.topic_id
   AND p2.forum_id = p.forum_id)
GROUP BY forum_id, topic_id, post_id
ORDER BY post_time DESC
LIMIT 5;

o

SELECT post_id, forum_id, topic_id FROM posts
NATURAL JOIN
(SELECT forum_id, topic_id, max(post_time) AS post_time
 FROM posts
 GROUP BY forum_id, topic_id) p
ORDER BY post_time
LIMIT 5;