Mysql
 sql >> Base de données >  >> RDS >> Mysql

MYSQL sélectionne les articles les plus récents à partir des tables

L'identifiant fonctionnerait toujours théoriquement, à condition que l'identifiant ne change jamais...

Je recommanderais d'utiliser un champ d'horodatage dans la structure de la table appelé "date" et d'utiliser "CURRENT_TIMESTAMP" comme valeur par défaut, cela remplira automatiquement la date/heure sur l'enregistrement lors de l'insertion...

Trier par ce champ DESC, limite x

De plus, j'ai rencontré de nombreux cas d'apparition de données erronées grâce au regroupement... Assurez-vous que vos données sont correctes avant d'appliquer ORDER BY et LIMIT

Pour obtenir des publications de l'utilisateur 1 à l'utilisateur 1, il n'est pas nécessaire de regrouper par :

SELECT * FROM posts 
WHERE toID=fromID
ORDER BY date DESC LIMIT 3

Pour obtenir des messages de * à user1 :

SELECT * FROM posts 
WHERE toID="USER1_ID"
ORDER BY date DESC LIMIT 3

Pour obtenir des messages de * à user1, seuls les utilisateurs uniques :

SELECT * FROM posts 
WHERE toID="USER1_ID"
GROUP BY FromID
ORDER BY date DESC LIMIT 3

Parfois, vous rencontrerez le problème où les enregistrements GROUPÉS ne sont pas classés par ORDER BY, car ORDER BY est appliqué au résultat APRÈS l'application du regroupement... Pour trouver une solution :

SELECT * FROM (
  SELECT * FROM posts 
  WHERE toID="USER1_ID"
  ORDER BY date DESC
) as `derived` GROUP BY FromID LIMIT 3

Pour obtenir les 3 derniers utilisateurs qui se sont récemment envoyé un message :

SELECT * FROM (
  SELECT * FROM posts 
  WHERE toID=fromID
  ORDER BY date DESC
) as `derived` GROUP BY FromID LIMIT 3