SQL-Abfrage: Rufen Sie das letzte aufgezeichnete Datum und den Wert jedes Benutzers ab
Der Anmeldedatensatz des Benutzers wird in der Datenbank gespeichert und die Aufgabe besteht darin, das letzte Anmeldedatum und den entsprechenden Wert für jeden einzelnen Benutzer abzurufen. Die folgende Tabelle zeigt die Tabelle mit diesen Daten, mit Feldern wie Benutzername, Datum und Wert:
**用户名** | **日期** | **值** |
---|---|---|
brad | 2010年1月2日 | 1.1 |
fred | 2010年1月3日 | 1.0 |
bob | 2009年8月4日 | 1.5 |
brad | 2010年2月2日 | 1.2 |
fred | 2009年12月2日 | 1.3 |
SQL-Abfrage zum Abrufen des neuesten Aufzeichnungsdatums und -werts für jeden Benutzer
Hier gibt es zwei Möglichkeiten, das letzte Aufzeichnungsdatum und den letzten Aufzeichnungswert für jeden Benutzer abzurufen:
Methode 1: Selbstverbindung nutzen
Dieser klassische Ansatz verwendet einen Self-Join, um die Tabelle mit sich selbst abzugleichen (basierend auf dem Benutzernamen) und verwendet die Aggregatfunktion MAX(), um das maximale Datum für jeden Benutzer abzurufen:
<code class="language-sql">SELECT t.username, t.date, t.value FROM MyTable t INNER JOIN ( SELECT username, MAX(date) AS MaxDate FROM MyTable GROUP BY username ) tm ON t.username = tm.username AND t.date = tm.MaxDate;</code>
Methode 2: Fensterfunktion verwenden (falls unterstützt)
Fensterfunktionen bieten eine effizientere Alternative, die das Problem doppelter Datensätze vermeidet, das durch gleiche Datumsangaben verursacht wird. Diese Methode verwendet die Funktion ROW_NUMBER(), um eine Ergebnismenge zu bearbeiten, die nach Benutzernamen partitioniert und in absteigender Reihenfolge nach Datum sortiert ist:
<code class="language-sql">SELECT x.username, x.date, x.value FROM ( SELECT username, date, value, ROW_NUMBER() OVER (PARTITION BY username ORDER BY date DESC) AS _rn FROM MyTable ) x WHERE x._rn = 1;</code>
Diese Abfragen führen zu den folgenden Ergebnissen und zeigen das letzte Anmeldedatum und den letzten Anmeldewert jedes Benutzers:
**用户名** | **日期** | **值** |
---|---|---|
brad | 2010年2月2日 | 1.2 |
fred | 2010年1月3日 | 1.0 |
bob | 2009年8月4日 | 1.5 |
Das obige ist der detaillierte Inhalt vonWie finde ich das neueste Anmeldedatum und den neuesten Anmeldewert für jeden Benutzer in SQL?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!