Heim >Datenbank >MySQL-Tutorial >Wie kann ich die neueste Zeile für eine bestimmte ID basierend auf Zeitstempeln effizient abrufen?
Abrufen der neuesten Zeile für eine angegebene ID
Wie können Sie in einer Tabelle, die mehrere Zeilen mit derselben ID enthält, effizient nur die Zeilen extrahieren? Neueste Zeile basierend auf Zeitstempeln? Betrachten Sie die Beispieltabelle:
| id | signin | signout | +----+---------------------+---------+ | 1 | 2011-12-12 09:27:24 | NULL | | 1 | 2011-12-13 09:27:31 | NULL | | 1 | 2011-12-14 09:27:34 | NULL | | 2 | 2011-12-14 09:28:21 | NULL | +----+---------------------+---------+
Um dies zu erreichen, können Sie Aggregatfunktionen und Unterabfragen verwenden.
Verwenden von Aggregate MAX()
The Mit der Funktion „Aggregate MAX()“ kann der Zeitstempel der letzten Anmeldung für jede ID ermittelt werden. Indem Sie die Ergebnisse nach der ID-Spalte gruppieren, können Sie den maximalen Anmeldezeitstempel für jede eindeutige ID ermitteln.
SELECT id, MAX(signin) AS most_recent_signin FROM tbl GROUP BY id
Abrufen der vollständigen Zeile
Um die gesamte Zeile abzurufen Verwenden Sie in der Zeile, die der letzten Anmeldung für eine bestimmte ID entspricht, einen INNER JOIN für eine Unterabfrage, die den maximalen Anmeldezeitstempel pro zurückgibt ID.
SELECT tbl.id, signin, signout FROM tbl INNER JOIN ( SELECT id, MAX(signin) AS maxsign FROM tbl GROUP BY id ) ms ON tbl.id = ms.id AND signin = maxsign WHERE tbl.id=1
Diese Abfrage gibt den vollständigen neuesten Datensatz mit> zurück
Das obige ist der detaillierte Inhalt vonWie kann ich die neueste Zeile für eine bestimmte ID basierend auf Zeitstempeln effizient abrufen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!