Heim >Datenbank >MySQL-Tutorial >Wie rufe ich die neueste Nachricht von jeder Benutzergruppe in SQL ab?
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:
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!