Abrufen der neuesten Datensätze pro Gruppe mit GROUP BY
In diesem Zusammenhang haben Sie eine Tabelle mit dem Namen „Nachrichten“ mit den Spalten „ id“, „from_id“, „to_id“, „subject“, „message“ und „timestamp“. Ihr Ziel ist es, die neueste Nachricht von jedem Benutzer zu extrahieren, ähnlich der Anzeige in einem Facebook-Posteingang.
Die bereitgestellte Abfrage „SELECT * FROM messages GROUP BY from_id“ liefert stattdessen die älteste Nachricht für jeden Benutzer des Neuesten. Um dies zu beheben, ist ein alternativer Ansatz erforderlich.
Um die neuesten Nachrichten zu erhalten, müssen Sie den maximalen Zeitstempel für jeden Benutzer ermitteln und diese Informationen mit der Tabelle „Nachrichten“ verknüpfen. Die folgende Abfrage erreicht dies:
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 Abfrage führt Folgendes aus:
Das Ergebnis ist eine Tabelle, die nur die neuesten Nachrichten für jeden Benutzer enthält und die gewünschte Funktionalität bereitstellt.
Das obige ist der detaillierte Inhalt vonWie rufe ich die neueste Nachricht von jedem Benutzer in einer Datenbank ab?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!