Heim >Datenbank >MySQL-Tutorial >Wie rufe ich die neueste Nachricht von jeder Benutzergruppe in SQL ab?

Wie rufe ich die neueste Nachricht von jeder Benutzergruppe in SQL ab?

Patricia Arquette
Patricia ArquetteOriginal
2025-01-03 07:25:39419Durchsuche

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

So rufen Sie mit GROUP BY die neueste Nachricht aus der Gruppe jedes Benutzers ab

In Ihrer Datenbank gibt es eine Tabelle mit dem Namen „Nachrichten“, die Folgendes enthält: die folgende Spalten:

  • id
  • von_id
  • zu_id
  • Betreff
  • Nachricht
  • Zeitstempel

Ihr Ziel ist es, die neuesten Nachrichten von jedem Benutzer zu extrahieren Gruppe. Dies ähnelt beispielsweise der Nachrichtenliste, die Sie in Ihrem Facebook-Posteingang sehen, bevor Sie auf eine bestimmte Konversation klicken.

Zunächst haben Sie versucht, die folgende Abfrage zu verwenden, die Nachrichten nach der Spalte „from_id“ gruppiert:

SELECT * FROM messages GROUP BY from_id

Sie haben jedoch bemerkt, dass diese Abfrage die älteste Nachricht anstelle der neuesten zurückgibt.

Um diese Einschränkung zu überwinden, müssen Sie für jede Nachricht die neuesten Zeitstempelwerte ermitteln Nachrichtengruppe mithilfe einer Unterabfrage. Verbinden Sie dann diese Unterabfrage mit der Haupttabelle „Nachrichten“, um nur die neuesten Nachrichten herauszufiltern:

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;

Diese modifizierte Abfrage identifiziert effektiv die neuesten Datensätze in jeder Gruppe und liefert Ihnen die gewünschten Ergebnisse.

Das obige ist der detaillierte Inhalt vonWie rufe ich die neueste Nachricht von jeder Benutzergruppe in SQL ab?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn