Heim >Datenbank >MySQL-Tutorial >Wie kann ich mit MySQLs „MAX()' und „GROUP BY' effizient die neueste „pid' für jedes eindeutige „rid' abrufen?
Problem:
Gegeben ist eine Tabelle mit den Spalten PID und Zeitstempel , Kosten und RID besteht die Aufgabe darin, die PID der neuesten Zeile für jeden einzelnen RID abzurufen, wobei zu berücksichtigen ist, dass PID die primäre automatische Inkrementierung ist Schlüssel.
Ursprüngliche Abfrage:
Die folgende Abfrage ruft den maximalen Zeitstempel und die entsprechenden RID-Werte ab, gibt jedoch die neueste PID nicht korrekt zurück:
SELECT MAX(timestamp), rid, pid FROM theTable GROUP BY rid
Lösung:
Um effektiv die neueste PID für jede Fahrt zu erhalten, eine Kombination Anzahl der Techniken ist erforderlich:
Identifizieren Sie die maximalen Zeitstempel und entsprechenden Rid-Werte:
SELECT rid, MAX(timestamp) AS maxt FROM theTable GROUP BY rid
Verknüpfen Sie die Originaltabelle mit dem maximalen Zeitstempel Ergebnisse:
SELECT t.pid, t.cost, t.timestamp, t.rid FROM theTable AS t JOIN (SELECT rid, MAX(timestamp) AS maxt FROM theTable GROUP BY rid) AS maxt ON t.rid = maxt.rid AND t.timestamp = maxt.maxt
Diese überarbeitete Abfrage ruft effektiv die PID, die Kosten, den Zeitstempel und das Rid der neuesten Zeile für jedes eindeutige Rid in der Originaltabelle ab.
Das obige ist der detaillierte Inhalt vonWie kann ich mit MySQLs „MAX()' und „GROUP BY' effizient die neueste „pid' für jedes eindeutige „rid' abrufen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!