Heim >Datenbank >MySQL-Tutorial >Wie rufe ich die Top-N-Datensätze für jeden Benutzer in Access SQL ab?
Access SQL: Extrahieren der Top-N-Datensätze pro Benutzer
Diese Anleitung zeigt, wie Sie mit einer einzigen SQL-Abfrage die drei aktuellsten Datensätze für jeden Benutzer in einer Access-Datenbank abrufen. Für diese Aufgabe nutzen wir verschachtelte Abfragen.
Datenbankstruktur
Unsere Datenbank besteht aus zwei Tabellen:
LoginID
, Forename
, Surname
, DOB
, Guardian Forename
, Guardian Surname
, Telephone Number
ProgressID
, LoginID
, Score
, Date Taken
Die Lösung: Verschachtelte Abfragen
Ein einfacher Ansatz mit TOP N
innerhalb einer einzelnen Abfrage wird in Access SQL für diese spezielle Anforderung (Abrufen des obersten N für jede Gruppe) nicht direkt unterstützt. Stattdessen verwenden wir eine Unterabfrage, um dies zu erreichen:
Die innere Abfrage identifiziert die obersten drei Date Taken
-Werte für jedes LoginID
:
<code class="language-sql">SELECT TOP 3 PR2.[Date Taken] FROM Progress AS PR2 WHERE PR2.LoginID = PR1.LoginID ORDER BY PR2.[Date Taken] DESC</code>
Dieser Ergebnissatz wird dann in der IN
-Klausel der äußeren Abfrage verwendet, um die Progress
-Tabelle zu filtern:
<code class="language-sql">SELECT PR1.LoginID, PR1.Score, PR1.[Date Taken] FROM Progress AS PR1 WHERE PR1.[Date Taken] IN ( SELECT TOP 3 PR2.[Date Taken] FROM Progress AS PR2 WHERE PR2.LoginID = PR1.LoginID ORDER BY PR2.[Date Taken] DESC ) ORDER BY PR1.LoginID, PR1.[Date Taken] DESC;</code>
Diese letzte Abfrage gibt effizient die drei neuesten Datensätze für jedes LoginID
zurück, sauber sortiert nach LoginID
und dann nach Date Taken
in absteigender Reihenfolge (der neueste zuerst). Dadurch werden die Einschränkungen der direkten Anwendung von TOP N
auf gruppierte Daten in Access SQL umgangen.
Das obige ist der detaillierte Inhalt vonWie rufe ich die Top-N-Datensätze für jeden Benutzer in Access SQL ab?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!