Maison >base de données >tutoriel mysql >Comment récupérer le message le plus récent de chaque groupe d'utilisateurs dans SQL ?

Comment récupérer le message le plus récent de chaque groupe d'utilisateurs dans SQL ?

Patricia Arquette
Patricia Arquetteoriginal
2025-01-03 07:25:39512parcourir

How to Retrieve the Most Recent Message from Each User Group in SQL?

Comment récupérer le dernier message du groupe de chaque utilisateur à l'aide de GROUP BY

Dans votre base de données, vous avez une table nommée "messages" contenant ce qui suit colonnes :

  • id
  • from_id
  • to_id
  • sujet
  • message
  • horodatage

Votre objectif est d'extraire le dernier message de chaque utilisateur groupe. Par exemple, cela ressemble à la liste de messages que vous voyez dans votre boîte de réception Facebook avant de cliquer sur une conversation spécifique.

Au départ, vous avez essayé d'utiliser la requête suivante, qui regroupe les messages selon la colonne from_id :

SELECT * FROM messages GROUP BY from_id

Cependant, vous avez remarqué que cette requête renvoie le message le plus ancien au lieu du dernier.

Pour surmonter cette limitation, vous devez déterminer les dernières valeurs d'horodatage pour chaque groupe de messages à l’aide d’une sous-requête. Ensuite, joignez cette sous-requête à la table principale "messages" pour filtrer uniquement les derniers messages :

SELECT t1.* 
FROM messages t1
JOIN (
    SELECT from_id, MAX(timestamp) timestamp 
    FROM messages 
    GROUP BY from_id
) t2 ON t1.from_id = t2.from_id AND t1.timestamp = t2.timestamp;

Cette requête modifiée identifie efficacement les derniers enregistrements de chaque groupe, vous fournissant les résultats souhaités.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn