Teóricamente, lo de la identificación seguiría funcionando, siempre que la identificación nunca cambie...
Recomendaría usar un campo de marca de tiempo en la estructura de la tabla llamado "fecha" y usar "CURRENT_TIMESTAMP" como valor predeterminado, esto completará automáticamente la fecha/hora en el registro al insertar...
Ordenar por este campo DESC, límite x
Además, he experimentado muchos casos en los que aparecen datos incorrectos gracias a la agrupación... Asegúrese de que sus datos sean correctos antes de aplicar ORDER BY y LIMIT
Para obtener publicaciones de usuario1 a usuario1, no es necesario agrupar por:
SELECT * FROM posts
WHERE toID=fromID
ORDER BY date DESC LIMIT 3
Para obtener publicaciones de * a usuario1:
SELECT * FROM posts
WHERE toID="USER1_ID"
ORDER BY date DESC LIMIT 3
Para obtener publicaciones de * a usuario1, solo usuarios únicos:
SELECT * FROM posts
WHERE toID="USER1_ID"
GROUP BY FromID
ORDER BY date DESC LIMIT 3
A veces se encontrará con el problema de que los registros AGRUPADOS no están ordenados por ORDEN POR, porque ORDEN POR se aplica al resultado DESPUÉS de aplicar la agrupación... Para lograr una solución:
SELECT * FROM (
SELECT * FROM posts
WHERE toID="USER1_ID"
ORDER BY date DESC
) as `derived` GROUP BY FromID LIMIT 3
Para obtener los últimos 3 usuarios que se han enviado una publicación más recientemente:
SELECT * FROM (
SELECT * FROM posts
WHERE toID=fromID
ORDER BY date DESC
) as `derived` GROUP BY FromID LIMIT 3