Maison >base de données >tutoriel mysql >Comment récupérer le message le plus récent de chaque utilisateur dans une base de données ?

Comment récupérer le message le plus récent de chaque utilisateur dans une base de données ?

Linda Hamilton
Linda Hamiltonoriginal
2025-01-04 04:51:42510parcourir

How to Retrieve the Most Recent Message from Each User in a Database?

Récupération des enregistrements les plus récents par groupe avec GROUP BY

Dans ce contexte, vous disposez d'un tableau nommé "messages" avec les colonnes " id", "from_id", "to_id", "sujet", "message" et "horodatage". Votre objectif est d'extraire le message le plus récent de chaque utilisateur, semblable à l'affichage dans une boîte de réception Facebook.

La requête fournie, "SELECT * FROM messages GROUP BY from_id", renvoie le message le plus ancien pour chaque utilisateur. des derniers. Pour remédier à cela, une approche alternative est nécessaire.

Pour obtenir les messages les plus récents, vous devez déterminer l'horodatage maximum pour chaque utilisateur et joindre cette information au tableau "messages". La requête ci-dessous accomplit cela :

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 effectue les opérations suivantes :

  1. Calcule l'horodatage le plus récent pour chaque utilisateur dans la sous-requête "(SELECT from_id, MAX(timestamp) timestamp FROM messages GROUP BY from_id)".
  2. Joint cette sous-requête à la table "messages" d'origine en utilisant Colonnes "from_id" et "timestamp".

Le résultat est un tableau contenant uniquement les messages les plus récents pour chaque utilisateur, offrant la fonctionnalité souhaitée.

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