Heim > Datenbank > MySQL-Tutorial > Wie erhalte ich mit MAX() und GROUP BY die neueste PID für jede RID in MySQL?

Wie erhalte ich mit MAX() und GROUP BY die neueste PID für jede RID in MySQL?

Mary-Kate Olsen
Freigeben: 2024-12-30 02:02:09
Original
548 Leute haben es durchsucht

How to Get the Latest PID for Each RID in MySQL Using MAX() and GROUP BY?

MySQL-Abfrage: MAX() GROUP BY

Frage:

Wie rufen Sie die PID der letzten Zeile ab? für jede RID in einer Tabelle mithilfe einer MySQL-Abfrage, die MAX() und GROUP BY kombiniert?

Beispiel Daten:

CREATE TABLE theTable (
    `pid` INT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
    `timestamp` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    `cost` INT UNSIGNED NOT NULL,
    `rid` INT NOT NULL,
) Engine=InnoDB;

INSERT INTO theTable (`pid`, `timestamp`, `cost`, `rid`)
VALUES
  (1, '2011-04-14 01:05:07', 1122, 1),
  (2, '2011-04-14 00:05:07', 2233, 1),
  (3, '2011-04-14 01:05:41', 4455, 2),
  (4, '2011-04-14 01:01:11', 5566, 2),
  (5, '2011-04-14 01:06:06', 345, 1),
  (6, '2011-04-13 22:06:06', 543, 2),
  (7, '2011-04-14 01:14:14', 5435, 3),
  (8, '2011-04-14 01:10:13', 6767, 3)
;
Nach dem Login kopieren

Gewünschtes Ergebnis:

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

Falsche Abfrage:

SELECT MAX(timestamp),rid,pid FROM theTable GROUP BY rid
Nach dem Login kopieren

Diese Abfrage würde die PID des ersten Vorkommens jeder RID zurückgeben, nicht die spätestens.

Korrekte Abfrage:

Um die PID der neuesten Zeile für jede RID abzurufen, können Sie die folgende Abfrage verwenden:

SELECT pid, MAX(timestamp) AS latest_timestamp, rid
FROM theTable
GROUP BY rid
HAVING latest_timestamp = MAX(timestamp)
Nach dem Login kopieren

Diese Abfrage verwendet zunächst die GROUP BY-Klausel, um Zeilen nach der RID-Spalte zu gruppieren. Anschließend wird mit der Funktion MAX() der maximale Zeitstempel für jede Zeilengruppe berechnet. Schließlich werden die Ergebnisse mithilfe der HAVING-Klausel gefiltert, um nur die Zeilen mit dem neuesten Zeitstempel für jede RID beizubehalten.

Das obige ist der detaillierte Inhalt vonWie erhalte ich mit MAX() und GROUP BY die neueste PID für jede RID in MySQL?. 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