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

MYSQL selecciona las publicaciones más recientes de las tablas

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