Heim >Datenbank >MySQL-Tutorial >Wie kann ich mit MAX() und GROUP BY die PID der neuesten Zeile für jede eindeutige RID in MySQL abrufen?
MySQL-Abfrage: MAX() Group By
In MySQL wird die GROUP BY-Klausel verwendet, um Zeilen mit identischen Werten in einem angegebenen zu kombinieren Gruppe, während die Funktion MAX() den Maximalwert in einer bestimmten Spalte innerhalb einer Gruppe zurückgibt.
Problem Anweisung
Gegeben sei eine Tabelle mit den folgenden Spalten:
Das Ziel besteht darin, die PID der neuesten Zeile für jedes einzelne Rid abzurufen. Die erwartete Ausgabe sollte sein:
pid | MAX(timestamp) | rid |
---|---|---|
5 | 2011-04-14 01:06:06 | 1 |
3 | 2011-04-14 01:05:41 | 2 |
7 | 2011-04-14 01:14:14 | 3 |
Erste Abfrage
Die folgende Abfrage wurde versucht, um das Problem zu lösen:
SELECT MAX(timestamp),rid,pid FROM theTable GROUP BY rid
Allerdings Diese Abfrage gab falsche PIDs zurück, da sie die PIDs des ersten Vorkommens von Rid-Werten anstelle des neuesten auswählte Zeitstempel.
Lösungsabfrage
Um die gewünschten Ergebnisse zu erhalten, kann die folgende Abfrage verwendet werden:
SELECT pid, MAX(timestamp), rid FROM ( SELECT pid, timestamp, rid, ROW_NUMBER() OVER (PARTITION BY rid ORDER BY timestamp DESC) AS rn FROM theTable ) AS subquery WHERE rn = 1 GROUP BY rid
Erklärung
Diese Abfrage verwendet eine Unterabfrage, um die Zeilen für jedes Rid in absteigender Reihenfolge der Zeitstempel zu ordnen mit der Funktion ROW_NUMBER(). Die rn-Spalte weist jeder Zeile einen Rang zu, wobei 1 die Zeile mit dem neuesten Zeitstempel für jedes Rid darstellt.
Die äußere Abfrage filtert dann die Ergebnisse so, dass nur Zeilen mit rn gleich 1 enthalten sind, um sicherzustellen, dass nur die Die letzte Zeile für jedes Rid wird ausgewählt. Die pid-, MAX(timestamp)- und rid-Werte werden nach rid gruppiert, um die gewünschte Ausgabe zu erzeugen.
Das obige ist der detaillierte Inhalt vonWie kann ich mit MAX() und GROUP BY die PID der neuesten Zeile für jede eindeutige RID in MySQL abrufen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!