Heim > Datenbank > MySQL-Tutorial > Wie finde ich das neueste Anmeldedatum und den neuesten Anmeldewert für jeden Benutzer in SQL?

Wie finde ich das neueste Anmeldedatum und den neuesten Anmeldewert für jeden Benutzer in SQL?

Susan Sarandon
Freigeben: 2025-01-15 17:01:47
Original
937 Leute haben es durchsucht

How to Find the Latest Login Date and Value for Each User in SQL?

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage