Heim >Datenbank >MySQL-Tutorial >Wie rufe ich die PID der neuesten Zeile für jede eindeutige RID in MySQL ab?
Stellen Sie sich ein Szenario vor, in dem Sie eine MySQL-Tabelle mit Spalten wie Zeitstempel, Kosten, RID usw. haben . Ihr Ziel ist es, die PID der letzten Zeile für jedes einzelne Rid abzurufen.
Sie haben dies mit folgendem Versuch versucht Abfrage:
SELECT MAX(timestamp),rid,pid FROM theTable GROUP BY rid
Die zurückgegebenen PID-Werte stimmten jedoch nicht mit den maximalen Zeitstempeln überein. Dies liegt daran, dass GROUP BY alle Spalten in der SELECT-Klausel berücksichtigt und die erste passende Zeile für jede Gruppe auswählt.
Um dies zu beheben, müssen wir den Wert und den maximalen Zeitstempel für jede Gruppe ermitteln. Wir können dies mithilfe einer Unterabfrage tun:
SELECT rid, MAX(timestamp) AS ts FROM theTable GROUP BY rid
Das Ergebnis dieser Abfrage sieht folgendermaßen aus:
rid | ts -----|----- 1 | 2011-04-14 01:06:06 2 | 2011-04-14 01:05:41 3 | 2011-04-14 01:14:14
Jetzt können wir die Originaltabelle mit dieser Unterabfrage verknüpfen, indem wir „rid“ verwenden und Zeitstempel, um die gewünschten PID-Werte abzurufen:
SELECT theTable.pid, theTable.cost, theTable.timestamp, theTable.rid FROM theTable INNER JOIN ( SELECT rid, MAX(timestamp) AS ts FROM theTable GROUP BY rid ) AS maxt ON (theTable.rid = maxt.rid AND theTable.timestamp = maxt.ts)
Das Ergebnis dieser Abfrage liefert Ihnen PID, Kosten, Zeitstempel, und die letzte Zeile für jedes einzelne Rid löschen.
Das obige ist der detaillierte Inhalt vonWie rufe ich die PID der neuesten Zeile für jede eindeutige RID in MySQL ab?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!